Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Nessa aula, depois do Werkzeug não funciona mais.

Boa noite , Já tentei de tudo, cansei depois de várias tentivas.

Quando muda a versão do flask , dá um erro. se mudar a versão do Werkzeug dá outro erro, e etc. Justo na última aula :(.

"C:\Cursos Alura\Flask com Python\Curso1\jogoteca\venv\Scripts\python.exe" "C:\Cursos Alura\Flask com Python\Curso1\jogoteca\jogoteca.py" 
Traceback (most recent call last):
  File "C:\Cursos Alura\Flask com Python\Curso1\jogoteca\jogoteca.py", line 4, in <module>
    from flask_wtf.csrf import CSRFProtect
  File "C:\Cursos Alura\Flask com Python\Curso1\jogoteca\venv\Lib\site-packages\flask_wtf\__init__.py", line 4, in <module>
    from .recaptcha import Recaptcha
  File "C:\Cursos Alura\Flask com Python\Curso1\jogoteca\venv\Lib\site-packages\flask_wtf\recaptcha\__init__.py", line 1, in <module>
    from .fields import RecaptchaField
  File "C:\Cursos Alura\Flask com Python\Curso1\jogoteca\venv\Lib\site-packages\flask_wtf\recaptcha\fields.py", line 3, in <module>
    from . import widgets
  File "C:\Cursos Alura\Flask com Python\Curso1\jogoteca\venv\Lib\site-packages\flask_wtf\recaptcha\widgets.py", line 3, in <module>
    from flask import Markup
ImportError: cannot import name 'Markup' from 'flask' (C:\Cursos Alura\Flask com Python\Curso1\jogoteca\venv\Lib\site-packages\flask\__init__.py)

Process finished with exit code 1

O meu requirements, tá assim:

bcrypt==4.1.2
blinker==1.7.0
click==8.1.7
colorama==0.4.6
Flask==3.0.2
Flask-Bcrypt==1.0.1
Flask-Login==0.6.3
Flask-SQLAlchemy==3.1.1
Flask-WTF==1.0.0
greenlet==3.0.3
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.3
mysql-connector-python==8.0.28
mysqlclient==2.2.4
protobuf==4.25.2
SQLAlchemy==2.0.27
typing_extensions==4.9.0
Werkzeug==3.0.1
WTForms==3.1.2

Link do meu projeto jogoteca, https://drive.google.com/file/d/1b8XCeWOHzbbT9_wPJddhS2zR-ZSXLYvY/view?usp=sharing

Me ajude por favor. :)

3 respostas

Boa tarde! Maxsuel! Tudo bem?

Esses conflitos de bibliotecas são bem chatinhos mesmo, principalmente em Python, já tive várias dores de cabeça por conta de problemas desse tipo.

Mas vamos lá! Analisando o projeto que você compartilhou, pude notar alguns problemas nas suas dependências, sendo eles:

  1. É que a biblioteca Werkzeug==3.0.1 está sendo instalada duplicadamente, já que ela já é instalado quando instalamos o Flask e você colocou para que ela seja instalada novamente, causando um certo conflito.

  2. A versão do Flask-Bcrypt era uma versão antiga que contia alguns pacotes descontinuados, então deve ser alterada para uma mais recente.

Enfim, para solucionar toda essa situação, você deve apagar o seu arquivo "venv" e criá-lo novamente com o comando python -m venv venv e no seu arquivo "requirements.txt", adicione as seguintes dependências:

bcrypt==4.1.2
blinker==1.7.0
click==8.1.7
colorama==0.4.6
Flask==3.0.2
Flask-Bcrypt==1.0.1
Flask-Login==0.6.3
Flask-SQLAlchemy==3.0.3
Flask-WTF==1.2.1
greenlet==3.0.3
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.3
mysql-connector-python==8.0.28
mysqlclient==2.2.4
protobuf==4.25.2
SQLAlchemy==2.0.27
typing_extensions==4.9.0
WTForms==3.1.2

Agora, inicie o ambiente virtual Python e instale as dependências usando o comando pip install -r requirements.txt. Pronto, o seu projeto deve voltar a rodar sem mais problemas.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

eu fiz suas recomendações, e agora quando eu faço o login , aparece o seguinte erro:

TypeError: argument 'salt': 'InstrumentedAttribute' object cannot be converted to 'PyBytes'

solução!

Descobri o erro , estava na digitação do meu código ...... usuario = Usuarios.query.filter_by(nickname=form.nickname.data).first() senha = check_password_hash(Usuarios.senha, form.senha.data)

O CORRETO É:

usuario = Usuarios.query.filter_by(nickname=form.nickname.data).first() senha = check_password_hash(usuario.senha, form.senha.data)