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.


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


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


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.


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!


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?


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ê.


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.


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 :)


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


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).


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.


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


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.


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

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```

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"


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.


0

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


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.