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

ImportError: cannot import name 'Flask'

Estou recebendo esta mensagem de erro ao rodar o código

ImportError: cannot import name 'Flask'

Eu uso o VS Code rodando num ambiente Anaconda

Tenho certeza que o Flask está instalado, a partir do prompt do Anaconda

9 respostas

Olá Marcelo, tudo certo?

Por algum acaso você salvou o código com o nome flask?

Olá Diego. Não é o caso. Nomeei o arquivo como jogoteca.py, assim como o professor fez no curso

Olá Marcelo,

Normalmente esse erro é causado por algum arquivo ou pasta com o nome flask interferindo no import como o Diego sugeriu. Então verifica nos outros arquivos e pastas do projeto se isso não acontece.

Além disso você está executando o projeto a partir do Anaconda Prompt? Compartilha também o seu código do arquivo onde está acontecendo o erro.

oi Lucas, tudo bem?

Realmente o código estava numa pasta chamada flask

Eu renomeei a pasta e o problema persiste.

segue o código completo (como disse feito a partir da aula do Luan)

from flask import Flask, render_template, request, redirect, session, flash

app = Flask(__name__)
app.secret_key = ''


class Jogo:
    def __init__(self, nome, categoria, console):
        self.nome = nome
        self.categoria = categoria
        self.console = console


jogo1 = Jogo('Super Mario', 'Ação', 'SNES')
jogo2 = Jogo('Pokemon Gold', 'RPG', 'GBA')
lista = [jogo1, jogo2]


@app.route('/')
def index():
    return render_template('lista.html', titulo='Jogos', jogos=lista)


@app.route('/novo')
def novo():
    return render_template('novo.html', titulo='Novo Jogo')


@app.route('/criar', methods=['POST',])
def criar():
    nome = request. form['nome']
    categoria = request. form['categoria']
    console = request. form['console']
    jogo = Jogo(nome, categoria, console)
    lista.append(jogo)
    return redirect('/')


@app.route('/login')
def login():
    return render_template('login.html')

@app.route('/autenticar', methods=['POST',])
def autenticar():
    if 'mestra' == request.form['senha']:
        session['usuario_logado'] = request.form['usuario']
        flash(request.form['usuario'] + ' logou com sucesso')
        return redirect('/')
    else:
        flash('Não logado, tente novamente!')
        return redirect('/login')

app.run(debug=True)

Realmente está tudo correto com o seu código, o problema parece ser do ambiente, então só com vários testes para descobrir a causa.

Diz por favor mais um pouco sobre o seu ambiente. Como você está executando o projeto? é através do Anaconda Prompt, é no terminal dentro do vscode? Você está no windows?

Executei diretamente no VSCode.

Tente então executar manualmente pelo Anaconda Prompt, que é o ambiente onde o Flask está instalado:

Após abrir o Anaconda Prompt, navega até a pasta do projeto e executa python jogoteca.py

Diz qual o resultado disso.

solução!

Lucas,

O problema persistiu ao executar direto do prompt

Consegui resolver criando um novo ambiente virtual do Anaconda e reinstalando o flask por lá.

Abraço!

Ah, bom saber que deu certo!

Realmente estranho o erro, esse tipo de erro normalmente acontece por um arquivo ou pasta interferindo, mas como você viu que não era isso talvez o motivo seja um problema ocorrido durante a instalação.

Criar um novo ambiente virtual é bom porque reinstala tudo novamente "isolado" da configuração e instalação padrão que está com problema, talvez no futuro seja bom testar se reinstalando o flask ou até todo o ambiente Anaconda resolve o problema.

Obrigado por compartilhar a solução! Vou marcar sua resposta como a solução do tópico para encerrar, qualquer coisa é só iniciar um novo tópico ou falar aqui mesmo.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software