Flask ImportError: Nessun modulo denominato Flask


100

Sto seguendo il tutorial Flask qui:

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

Arrivo al punto in cui provo ./run.py e ottengo:

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

Questo è simile a:

ImportError: nessun modulo denominato flask

Ma le loro soluzioni non sono utili. Per avere un riferimento, io ne ho una cartella denominata pallone che un utente menzionato può causare problemi.


1
@MalikBrahimi Quando eseguo Python e quindi importa flask e controllo quale versione ho installato, restituisce "0.10.1". Quindi sembra che l'ho installato ...
bclayman

4
Stai dicendo che se esegui Python e quindi non import flaskhai errori? È possibile che tu abbia versioni di python sul tuo computer?
ari

2
Puoi inserire import sys; print sys.pathin quel file (prima della riga in cui si verifica l'errore) ed eseguirlo anche nel prompt interattivo?
ari

1
@ari ho provato a fare la cosa dell'ambiente virtuale ma potrei averlo incasinato in qualche modo? e sì, sto usando Python 3.3 ma penso di avere 2.7 in giro
bclayman

8
Non stai usando la versione 3, stai usando la versione 2 e hai due copie di Python versione 2 sul tuo Mac, una fornita con OSX e l'altra che hai installato. Quindi, tutto sommato, sembra che tu abbia tre versioni di Python; Python3, Python2 (installato da te), Python2 (fornito con il sistema). Sembra che tu non stia utilizzando l'ambiente corretto qui; dove hai installato Flask non è l'impostazione predefinita del sistema e questa è probabilmente la causa del tuo mal di testa.
Burhan Khalid

Risposte:


146

Prova a eliminare il virtualenv che hai creato. Quindi crea un nuovo virtualenv con:

virtualenv flask

Poi:

cd flask

Ora attiviamo virtualenv:

source bin/activate

Ora dovresti vedere (flask)a sinistra della riga di comando.

Installiamo il pallone:

pip install flask

Quindi creare un file denominato hello.py(NOTA: vedere di UPDATE Flask 1.0.2seguito):

from flask import Flask
app = Flask(__name__)

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

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

ed eseguilo con:

python hello.py

UPDATE Flask 1.0.2

Con la nuova versione di flask non è necessario eseguire l'app dal tuo script. hello.pydovrebbe apparire così ora:

from flask import Flask
app = Flask(__name__)

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

ed eseguilo con:

FLASK_APP=hello.py flask run

Assicurati di essere all'interno della cartella in cui si hello.pytrova quando esegui il comando più recente.

Tutti i passaggi prima della creazione di hello.py valgono anche per questo caso


3
Puoi posizionarlo ovunque fintanto che lo esegui con virtualenv abilitato.
Ripristino

Ciao, sono molto nuovo per Python. Tutto funziona perfettamente con virtualenv nel terminale. Ma il mio problema è che sto usando IDE Atom ... Atom può eseguire il codice nello stesso ambiente virtualenv?
Boog

52

Per utilizzare Python 3

pip3 install flask


4
Dopo aver cambiato la mia versione di Python da 2.7 a 3, ha funzionato!
Ricardo Silva

Sì, funziona! Invece di eseguire pip install flask (che è per python 2), se stai usando python3, devi usare pip3 install flask o altre estensioni di flask. Per cambiare la tua versione di python, puoi usare l'alias python = "python3".
Kourosh

11

L'unico modo in cui ho potuto risolvere era aggiungendo la directory python dei miei utenti al file myapp.wsgi. Come esempio:

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

Immagino che se installi i pacchetti nell'ambiente globale, non dovresti avere problemi, ma ho avuto i miei pacchetti Python installati come utente.


o in questo modoexport PYTHONPATH=/root/environments/my_env/lib/python3.6/site-packages/
Carlos Oliveira

7

Dopo aver attivato l'ambiente virtuale e installato Flask, ho creato un file app.py. Corro in questo modo: python -m flask run. Spero che questo ti aiuti!


Non sono sicuro del motivo per cui funziona, probabilmente qualcosa a che fare con il percorso. Qualche idea su questo?
nscalf

5

Ho avuto un problema simile con Flasgger.

Il motivo è che lo uso sempre

sudo pip install flask

ma per qualche motivo non è sempre la strada da percorrere. A volte, devi fare solo

pip install flask

Un altro problema è che a volte le persone scrivono pip install Flaskcon il maiuscolo F

Inserendo questo qui nel caso qualcuno si blocchi. Fammi sapere se ha aiutato.

Link utile: qual è la differenza tra pip install e sudo pip install?


5

Questo è ciò che ha funzionato per me,

sudo -H pip install flask

O per pip3 (python3) usa:

sudo -H pip3 install flask

Nota a margine

Se stai usando virtualenv, è una buona idea pip freeze >> requirements.txt consentire che i pacchetti installati siano elencati in un unico posto. Il sudocomando e la -Hbandiera. Per ulteriori informazioni su sudo's -Hbandiera, sguardo di Paul risposta . Spero che questo ti aiuti.


3

Stavo usando python2 ma ho installato questo: sudo apt-get install libapache2-mod-wsgi-py3

Invece di: sudo apt-get install libapache2-mod-wsgi

La correzione dell'installazione ha risolto il problema del no flask.


1
Ah sono le cose semplici. Ho avuto il mod wsgi di libapache sbagliato nel mio dockerfile dopo l'aggiornamento a python 3 ... ho un +1
Craicerjack

3

Nel mio caso la soluzione era semplice come avviare il mio ambiente virtuale in questo modo:

$ venv/scripts/activate

Si scopre che sono ancora fresco su Python :)


2
  1. modificare /etc/apache2/sites-available/FlaskApp.conf
  2. Aggiungi le seguenti due righe prima della riga "WSGIScriptAlias":

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

  1. Riavvia Apache:service apache2 restart

Sto seguendo anche il tutorial Flask e ho riscontrato lo stesso problema, ho trovato questo modo per risolverlo.

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


1

Vai alla scheda pallone in microblog, quindi attivare l'ambiente virtuale con source bin/activate, poi vai a pallone / bin e installare pallone, e il resto dei pacchetti, pip install flask. Vedrai flask elencato nella directory bin. Prova a eseguire di ./run.pynuovo da microblog (o da dove hai il file).


1

Anche io suggerisco u virtualenv, questo potrebbe anche risolvere il tuo problema.

sudo apt install python-flask

Se vuoi distribuire in productionserver, vai avanti con la soluzione sopra, altrimenti usa virtualenv.


1

Questo è ciò che ha funzionato per me quando ho ricevuto un errore simile in Windows; 1. Installa virtualenv

pip install virtualenve
  1. Crea un virtualenv

    pallone virtualenv

  2. Passa a Scripts e attiva il virtualenv

    attivare

  3. Installa Flask

    python -m pip install flask

  4. Verificare se il pallone è installato

    lista pip python -m


0

inserisci la tua modalità interattiva python quindi:

import sys

sys.path

stamperà il tuo percorso. Controlla se il flask è installato nel file sys.path.

Per MacOS, il percorso python si trova in /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

Ma pip installerà il pacchetto python per impostazione predefinita in /Library/Python/2.7/site-packages

Ecco perché non funziona per MacOS.


0

Lo script flask è utile per avviare un server di sviluppo locale, ma dovresti riavviarlo manualmente dopo ogni modifica al codice. Non è molto carino e Flask può fare di meglio. Se abiliti il ​​supporto per il debug, il server si ricaricherà in caso di modifiche al codice e ti fornirà anche un utile debugger se le cose vanno male. Per abilitare la modalità di debug puoi esportare la variabile d'ambiente FLASK_DEBUG prima di eseguire il server: ad esempio il tuo file è hello.py

$ export FLASK_APP=hello.py
$ export FLASK_DEBUG=1
$ flask run

0

nel mio caso utilizzando Docker, il mio file .env non è stato copiato, quindi le seguenti variabili env non sono state impostate:

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

quindi nel mio Dockerfileho dovuto includere:

FROM deploy as dev
COPY env ./env

a cui si fa riferimento in docker-compose.yml

env_file: ./env/.env.local

un'altra cosa a cui dovevo prestare attenzione è la variabile path per assicurarmi che il mio ambiente venga utilizzato

ENV PATH $CONDA_DIR/envs/:my_environment_name_from_yml_file:/bin:$CONDA_DIR/bin:$PATH```

0

la mia risposta solo per tutti gli utenti che utilizzano il progetto Web Flesk di Visual Studio:

Basta fare clic destro su "Ambiente Python" e fare clic su "Aggiungi ambiente"


0

Se stai usando Pycharm, questo è il problema dell'ambiente virtuale.

Quindi, al momento della creazione del tuo progetto Python dovrai selezionare l'opzione "Interprete esistente" -> fare clic su "Interprete di sistema" -> selezionare l'opzione corretta per esempio "* \ AppData \ Local \ Programmi \ Python \ Python3.6 \ python.exe ".

Puoi anche usare "New Virtual Env", ma ho appena fornito la soluzione rapida che dovrebbe funzionare per gli utenti di Pycharm.


0

Un'altra cosa: se stai usando python3, assicurati di avviare il tuo server con python3 server.py, nopython server.py


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.