2
respostas

ImportError: cannot import name '_app_ctx_stack' from 'flask' (E:\Python Flask\jogoteca\venv\Lib\site-packages\flask\__init__.py)

Até a fase de criação e conexão com o banco de dados, o seguinte erro não era visivel: ImportError: cannot import name 'app_ctx_stack' from 'flask' (E:\Python Flask\jogoteca\venv\Lib\site-packages\flask_init.py).

Pesquisei em fóruns da Alura e no professor Google, mesmo mudando às versões, deixando iguais aos do fluxo do curso o erro não foi resolvido. Preciso de uma orientação nível II.

2 respostas

Olá, Jeremias! Tudo bem? Peço desculpa pela demora em responder o seu tópico.

Esse erro que você está enfrentando, ImportError: cannot import name '_app_ctx_stack' from 'flask', geralmente ocorre devido a incompatibilidades entre as versões das bibliotecas que você está utilizando no seu projeto.

Primeiro, verifique se você está utilizando as versões recomendadas no curso para todas as bibliotecas. Pelo que você mencionou, parece que você já tentou ajustar as versões, mas vamos garantir que todas estão corretas. Aqui estão as versões que você deve usar:

  • Flask: 3.0.0
  • Flask-SQLAlchemy: 2.5.1
  • Flask-WTF: 1.0.0
  • Flask-Bcrypt: 0.7.1

Para garantir que todas as versões estão corretas, você pode criar um novo ambiente virtual e instalar as bibliotecas com as versões específicas. Aqui está um passo a passo:

  1. Crie um novo ambiente virtual:

    python -m venv venv
    
  2. Ative o ambiente virtual:

    • No Windows:

      venv\Scripts\activate
      
    • No macOS/Linux:

      source venv/bin/activate
      

      Se nesse passo você receber uma mensagem de erro, será necessário aplicar uma configuração antes de rodar o ambiente virtual. Primeiro você deve fechar todo terminal ou IDE que você tenha aberto, abra o Powershell como administrador e cole o seguinte comando: Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser, depois digite a letra "A" para dizer sim para todas as perguntas. Ao fim disso você conseguirá realizar o comando descrito acima.

  3. Instale as bibliotecas com as versões específicas:

    pip install Flask==3.0.0
    pip install Flask-SQLAlchemy==2.5.1
    pip install Flask-WTF==1.0.0
    pip install Flask-Bcrypt==0.7.1
    
  4. Verifique se o erro persiste. Tente rodar seu projeto novamente e veja se o problema foi resolvido.

Se o problema continuar, pode ser útil que você compartilhe o seu projeto, via GitHub ou Drive do Google, para que eu analise o seu projeto, você pode está usando de outra importação que esteja causando esse conflito.

Espero ter ajudado e bons estudos!

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

Solução: Consegui rodar a aplicação jogoteca com a seguinte combinação:

Flask-SQLAlchemy==3.0.2
flask==2.2.2
Werkzeug==2.2.2

(Não garanto se poderá gerar outros erros adiante...)

Problema: Comigo continua a mesma coisa. Criei outro ambiente virtual, segui todas as recomendações da Alura, mas o problema persiste. Não sei se tem a ver, ele surgiu depois de instalar via pip o wtf no primeiro, mas no caso do segundo ambiente virtual, nem chegou a ser instalado...