Flask ImportError: nenhum módulo denominado Flask

100

Estou seguindo o tutorial do Flask aqui:

http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world

Chego ao ponto em que tento ./run.py e obtenho:

Traceback (most recent call last):
  File "./run.py", line 3, in <module>
    from app import app
  File "/Users/benjaminclayman/Desktop/microblog/app/__init__.py", line 1, in <module>
    from flask import Flask
ImportError: No module named flask

Isso é semelhante a:

ImportError: Nenhum módulo denominado flask

Mas suas soluções não são úteis. Para referência, eu não tenho uma pasta chamada frasco que um usuário mencionados podem causar problemas.

bclayman
fonte
1
@MalikBrahimi Quando executo o Python e, em seguida, importo o flask e verifico qual versão instalei, ele retorna "0.10.1". Parece que eu o tenho instalado ...
bclayman
4
Você está dizendo que se executa o python e não import flaskhá erros? É possível que você tenha versões do python em seu computador?
ari
2
Você pode inserir import sys; print sys.pathnesse arquivo (antes da linha onde o erro ocorre) e também executá-lo no prompt interativo?
ari
1
@ari Eu tentei fazer a coisa do ambiente virtual mas pode ter bagunçado de alguma forma? e sim, estou usando Python 3.3, mas acho que tenho 2.7 flutuando
bclayman
8
Você não está usando a versão 3, está usando a versão 2 e tem duas cópias do Python versão 2 no seu mac, uma que veio com o OSX e a outra que você instalou. Portanto, em suma - parece que você tem três versões do Python; Python3, Python2 (você instalou), Python2 (veio com o sistema). Parece que você não está usando o ambiente correto aqui; onde você instalou o Flask não é o padrão do sistema, e esta é provavelmente a causa de sua dor de cabeça.
Burhan Khalid

Respostas:

145

Tente excluir o virtualenv que você criou. Em seguida, crie um novo virtualenv com:

virtualenv flask

Então:

cd flask

Agora vamos ativar o virtualenv:

source bin/activate

Agora você deve ver (flask)à esquerda da linha de comando.

Vamos instalar o frasco:

pip install flask

Em seguida, crie um arquivo chamado hello.py(NOTA: veja UPDATE Flask 1.0.2abaixo):

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

e execute-o com:

python hello.py

ATUALIZAR Flask 1.0.2

Com o novo lançamento do frasco, não há necessidade de executar o aplicativo a partir do seu script. hello.pydeve ficar assim agora:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

e execute-o com:

FLASK_APP=hello.py flask run

Certifique-se de estar dentro da pasta em que hello.pyestá ao executar o comando mais recente.

Todas as etapas antes da criação do hello.py se aplicam a este caso também

Rollback
fonte
3
Você pode colocá-lo em qualquer lugar, desde que o execute com o virtualenv ativado.
Rollback de
Olá, sou muito novo no python. Tudo funciona bem com o virtualenv no terminal. Mas, meu problema é que estou usando IDE Atom ... o atom pode executar o código no mesmo ambiente virtualenv?
boog
52

Para python 3 use

pip3 instalar frasco

Khalid Bin Huda
fonte
4
Depois de mudar minha versão do python de 2.7 para 3, funcionou!
Ricardo Silva
Sim, isso funciona! Em vez de fazer pip install flask (que é para python 2), se você estiver usando python3, precisará usar pip3 install flask ou outras extensões de flask. Para alterar sua versão do python, você pode usar o alias python = "python3".
Kourosh
11

A única maneira que consegui resolver foi adicionando o diretório python de meus usuários ao arquivo myapp.wsgi. Como um exemplo:

sys.path.append('/home/deployer/anaconda3/lib/python3.5/site-packages')

Eu acho que se você instalar os pacotes no ambiente global, você não deverá ter nenhum problema, mas eu tive meus pacotes python instalados como usuário.

Julian
fonte
ou fazendo issoexport PYTHONPATH=/root/environments/my_env/lib/python3.6/site-packages/
Carlos Oliveira
7

Depois de ativar o ambiente virtual e instalar o Flask, criei um arquivo app.py. Eu executá-lo como este: python -m flask run. Espero que isso ajude!

Bogdan001
fonte
Não sei por que isso está funcionando, provavelmente algo a ver com o caminho. Alguma ideia sobre isso?
nscalf
5

Tive um problema semelhante com o pisca-pisca.

A razão para isso é que eu sempre uso

sudo pip install flask

mas, por algum motivo, nem sempre é esse o caminho a percorrer. Às vezes, você tem que fazer apenas

pip install flask

Outra pegadinha é que às vezes as pessoas digitam pip install Flaskcom a tampa F

Postar isso aqui para o caso de alguém travar. Deixe-me saber se ajudou.

Link útil: Qual é a diferença entre pip install e sudo pip install?

aneesh joshi
fonte
5

Isto é o que funcionou para mim,

sudo -H pip install flask

Ou para pip3 (python3), use:

sudo -H pip3 install flask

Nota

Se você estiver usando o virtualenv, é uma boa ideia pip freeze >> requirements.txt permitir que os pacotes instalados sejam listados em um só lugar. O sudocomando e a -Hbandeira. Para saber mais sobre sudoa -Hbandeira de, veja a resposta de Paulo . Espero que isso ajude você.

plutônio bruto
fonte
3

Eu estava usando o python2, mas instalei este: sudo apt-get install libapache2-mod-wsgi-py3

Em vez de: sudo apt-get install libapache2-mod-wsgi

Corrigir a instalação resolveu o problema sem frasco.

Norman Pilusa
fonte
1
Ah, são as coisas simples. Eu tinha o mod wsgi de libapache errado em meu dockerfile depois de atualizar para python 3 ... tenho um +1
Craicerjack
3

No meu caso, a solução foi tão simples quanto iniciar meu ambiente virtual assim:

$ venv/scripts/activate

Acontece que ainda estou fresco no Python :)

Uma aposta
fonte
2
  1. Editar /etc/apache2/sites-available/FlaskApp.conf
  2. Adicione as duas linhas a seguir antes da linha "WSGIScriptAlias":

WSGIDaemonProcess FlaskApp python-home=/var/www/FlaskApp/FlaskApp/venv/FlaskApp WSGIProcessGroup FlaskApp

  1. Reinicie o Apache:service apache2 restart

Estou seguindo o tutorial do Flask também. E encontrei o mesmo problema. Encontrei uma maneira de consertá-lo.

http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world

NingAnMe
fonte
1

Vá para o arquivo flask no microblog, ative o ambiente virtual com source bin/activate, vá para flask / bin e instale o flask, e o restante dos pacotes pip install flask,. Você verá o frasco listado dentro do diretório bin. Tente executar ./run.pynovamente a partir do microblog (ou de onde quer que você tenha o arquivo).

Miguel
fonte
1

Mesmo eu também sugiro u virtualenv, isso também pode resolver seu problema.

sudo apt install python-flask

Se você deseja implantar no productionserver, vá em frente com a solução acima, caso contrário, use o virtualenv.

Yunus
fonte
1

Foi isso que funcionou para mim quando recebi um erro semelhante no Windows; 1. Instale o virtualenv

pip install virtualenve
  1. Crie um virtualenv

    frasco virtualenv

  2. Navegue até Scripts e ative o virtualenv

    ativar

  3. Instale o Flask

    frasco de instalação python -m pip

  4. Verifique se o frasco está instalado

    lista de pip python -m

Sammy Ongaya
fonte
0

entre no modo interativo do python e:

import sys

sys.path

ele imprimirá seu caminho. Verifique se o frasco está instalado no sys.path.

Para MacOS, o caminho Python está em /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

Mas o pip instalará o pacote python por padrão em /Library/Python/2.7/site-packages

É por isso que não funciona para MacOS.

Tao W
fonte
0

O script flask é bom para iniciar um servidor de desenvolvimento local, mas você teria que reiniciá-lo manualmente após cada alteração em seu código. Isso não é muito bom e o Flask pode fazer melhor. Se você habilitar o suporte para depuração, o servidor irá recarregar-se nas mudanças de código e também fornecerá um depurador útil se algo der errado. Para habilitar o modo de depuração, você pode exportar a variável de ambiente FLASK_DEBUG antes de executar o servidor: por exemplo, seu arquivo é hello.py

$ export FLASK_APP=hello.py
$ export FLASK_DEBUG=1
$ flask run
Yasin Lachini
fonte
0

no meu caso, usando Docker, meu arquivo .env não foi copiado, portanto, os seguintes env vars não foram definidos:

.env.local: FLASK_APP=src/app.py

então na minha Dockerfileeu tive que incluir:

FROM deploy as dev
COPY env ./env

que foi referenciado em docker-compose.yml

env_file: ./env/.env.local

outra coisa que eu tive que prestar atenção é a variável de caminho para garantir que meu ambiente seja usado

ENV PATH $CONDA_DIR/envs/:my_environment_name_from_yml_file:/bin:$CONDA_DIR/bin:$PATH```
Sonic Soul
fonte
0

minha resposta apenas para qualquer usuário que use o projeto da Web do Visual Studio Flesk:

Basta clicar com o botão direito em "Ambiente Python" e clicar em "Adicionar ambiente"

hossein andarkhora
fonte
0

Se você estiver usando o Pycharm, esse é o problema do ambiente virtual.

Portanto, no momento de criar seu projeto Python, você terá que selecionar a opção "Interpretador existente" -> clique em "Interpretador do sistema" -> selecione a opção correta, por exemplo "* \ AppData \ Local \ Programs \ Python \ Python3.6 \ python.exe ".

Você também pode usar o 'Novo ambiente virtual', mas acabei de apresentar uma correção rápida que deve funcionar para os usuários do Pycharm.

Ashish Bansal
fonte
0

Outra coisa - se você estiver usando python3, certifique-se de que está iniciando seu servidor com python3 server.py, nãopython server.py

Evan
fonte
-1

Funcionou para mim depois de atualizar o pip:

curl https://bootstrap.pypa.io/get-pip.py | python

Encontre essa resposta aqui: https://stackoverflow.com/a/49748494/3197202

Então eu poderia apenas instalar o flask:

pip install flask
Ivanacorovic
fonte