Flask ImportError: Aucun module nommé Flask

100

Je suis le tutoriel Flask ici:

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

J'arrive au point où j'essaye ./run.py et j'obtiens:

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

Cela ressemble à:

ImportError: aucun module nommé flask

Mais leurs solutions ne sont pas utiles. Pour référence, je n'ai un dossier nommé flacon dont un utilisateur mentionné peut causer des problèmes.

bclayman
la source
1
@MalikBrahimi Lorsque j'exécute Python, puis j'importe le flask et vérifie la version que j'ai installée, il renvoie "0.10.1". Il semble donc que je l'ai installé ...
bclayman
4
Vous dites que si vous exécutez python et que import flaskvous n'avez aucune erreur? Est-il possible que vous ayez des versions de python sur votre ordinateur?
ari
2
Pouvez-vous insérer import sys; print sys.pathdans ce fichier (avant la ligne où l'erreur se produit) et l'exécuter également dans l'invite interactive?
ari
1
@ari J'ai essayé de faire le truc de l'environnement virtuel mais peut-être l'avoir gâché d'une manière ou d'une autre? et oui, j'utilise Python 3.3 mais je pense que j'ai 2.7 flottant
bclayman
8
Vous n'utilisez pas la version 3, vous utilisez la version 2 et vous avez deux copies de Python version 2 sur votre mac, l'une fournie avec OSX et l'autre que vous avez installée. Donc, dans l'ensemble, il semble que vous ayez trois versions de Python; Python3, Python2 (que vous avez installé), Python2 (fourni avec le système). On dirait que vous n'utilisez pas le bon environnement ici; où vous avez installé Flask n'est pas la valeur par défaut du système, et c'est probablement la cause de votre mal de tête.
Burhan Khalid

Réponses:

146

Essayez de supprimer le virtualenv que vous avez créé. Créez ensuite un nouveau virtualenv avec:

virtualenv flask

Ensuite:

cd flask

Maintenant, activons le virtualenv:

source bin/activate

Vous devriez maintenant voir (flask)sur la gauche de la ligne de commande.

Installons flask:

pip install flask

Créez ensuite un fichier nommé hello.py(REMARQUE: voir UPDATE Flask 1.0.2ci - dessous):

from flask import Flask
app = Flask(__name__)

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

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

et exécutez-le avec:

python hello.py

MISE À JOUR Flask 1.0.2

Avec la nouvelle version de Flask, il n'est pas nécessaire d'exécuter l'application à partir de votre script. hello.pydevrait ressembler à ceci maintenant:

from flask import Flask
app = Flask(__name__)

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

et exécutez-le avec:

FLASK_APP=hello.py flask run

Assurez-vous d'être dans le dossier où se hello.pytrouve lors de l'exécution de la dernière commande.

Toutes les étapes avant la création de hello.py s'appliquent également à ce cas

Retour en arriere
la source
3
Vous pouvez le placer n'importe où tant que vous l'exécutez avec virtualenv activé.
Restauration
Salut, je suis très nouveau pour python. Tout fonctionne très bien avec virtualenv dans le terminal. Mais mon problème est que j'utilise IDE Atom ... Atom peut-il exécuter le code dans le même environnement virtualenv?
boog le
52

Pour python 3, utilisez

pip3 installer le ballon

Khalid Bin Huda
la source
4
Après avoir changé ma version python de 2.7 à 3, cela a fonctionné!
Ricardo Silva
Oui cela fonctionne! Au lieu de faire pip install flask (qui est pour python 2), si vous utilisez python3, vous devez utiliser pip3 install flask ou d'autres extensions de flask. Pour changer votre version de python, vous pouvez utiliser l'alias python = "python3".
Kourosh
11

La seule façon de résoudre ce problème était d'ajouter le répertoire python de mes utilisateurs au fichier myapp.wsgi. Par exemple:

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

Je suppose que si vous installez les packages dans l'environnement global, vous ne devriez avoir aucun problème, mais mes packages python étaient installés en tant qu'utilisateur.

julien
la source
ou en faisant çaexport PYTHONPATH=/root/environments/my_env/lib/python3.6/site-packages/
Carlos Oliveira
7

Après avoir activé l'environnement virtuel et installé Flask, j'ai créé un fichier app.py. Je lance comme ça: python -m flask run. J'espère que cela aidera!

Bogdan001
la source
Je ne sais pas pourquoi cela fonctionne, probablement quelque chose à voir avec le chemin. Un aperçu à ce sujet?
nscalf
5

J'ai eu un problème similaire avec flasgger.

La raison en est que j'utilise toujours

sudo pip install flask

mais pour une raison quelconque, ce n'est pas toujours la voie à suivre. Parfois, tu dois faire juste

pip install flask

Un autre problème est que parfois les gens tapent pip install Flaskavec le cap F

Publier ceci ici au cas où quelqu'un serait bloqué. Faites-moi savoir si cela a aidé.

Lien utile: Quelle est la différence entre pip install et sudo pip install?

aneesh joshi
la source
5

C'est ce qui a fonctionné pour moi,

sudo -H pip install flask

Ou pour pip3 (python3), utilisez:

sudo -H pip3 install flask

Sidenote

Si vous utilisez virtualenv, il est judicieux pip freeze >> requirements.txt d'autoriser la liste des packages installés au même endroit. La sudocommande et le -Hdrapeau. Pour en savoir plus sur sudole -Hdrapeau de, regardez la réponse de Paul . J'espère que cela vous aide.

plutonium brut
la source
3

J'utilisais python2 mais j'ai installé ceci: sudo apt-get install libapache2-mod-wsgi-py3

Au lieu de: sudo apt-get install libapache2-mod-wsgi

La correction de l'installation a résolu le problème du no flask.

Norman Pilusa
la source
1
Ah ce sont les choses simples. J'ai eu le mauvais mod wsgi de libapache dans mon fichier docker après la mise à niveau vers python 3 ... avoir un +1
Craicerjack
3

Dans mon cas, la solution était aussi simple que de démarrer mon environnement virtuel comme ceci:

$ venv/scripts/activate

Il s'avère que je suis encore frais avec Python :)

Abid
la source
2
  1. Éditer /etc/apache2/sites-available/FlaskApp.conf
  2. Ajoutez les deux lignes suivantes avant la ligne "WSGIScriptAlias":

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

  1. Redémarrez Apache:service apache2 restart

Je suis aussi le tutoriel Flask, et j'ai rencontré le même problème, j'ai trouvé ce moyen de le résoudre.

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

NingAnMe
la source
1

Accédez au fichier flacon dans microblog, puis activez l'environnement virtuel avec source bin/activate, puis passez à flacon / bin et flacon d' installation, et le reste des paquets, pip install flask. Vous verrez flask répertorié dans le répertoire bin. Essayez de ./run.pyrecommencer à partir du microblog (ou de l’endroit où vous avez le fichier).

Miguel
la source
1

Même je suggère que vous virtualenv, cela pourrait également résoudre votre problème.

sudo apt install python-flask

Si vous voulez déployer dans productionserver, continuez avec la solution ci-dessus, sinon utilisez virtualenv.

yunus
la source
1

C'est ce qui a fonctionné pour moi lorsque j'ai eu une erreur similaire dans Windows; 1. Installez virtualenv

pip install virtualenve
  1. Créer une virtualenv

    flacon virtualenv

  2. Accédez aux scripts et activez le virtualenv

    Activer

  3. Installer Flask

    flacon d'installation python -m pip

  4. Vérifiez si le flacon est installé

    python -m liste de pip

sammy ongaya
la source
0

entrez votre mode interactif python puis:

import sys

sys.path

il imprimera votre chemin. Vérifiez si flask est installé dans le sys.path.

Pour MacOS, le chemin python se trouve sous /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

Mais pip installera le package python par défaut sous /Library/Python/2.7/site-packages

C'est pourquoi cela ne fonctionne pas pour MacOS.

Tao W
la source
0

Le script flask est bien pour démarrer un serveur de développement local, mais vous devrez le redémarrer manuellement après chaque modification de votre code. Ce n'est pas très agréable et Flask peut faire mieux. Si vous activez la prise en charge du débogage, le serveur se rechargera lors des changements de code, et il vous fournira également un débogueur utile en cas de problème. Pour activer le mode débogage, vous pouvez exporter la variable d'environnement FLASK_DEBUG avant d'exécuter le serveur: par exemple, votre fichier est hello.py

$ export FLASK_APP=hello.py
$ export FLASK_DEBUG=1
$ flask run
yasin lachini
la source
0

dans mon cas en utilisant Docker, mon fichier .env n'a pas été copié, donc les variables d'environnement suivantes n'ont pas été définies:

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

donc dans mon Dockerfileje devais inclure:

FROM deploy as dev
COPY env ./env

qui a été référencé dans docker-compose.yml

env_file: ./env/.env.local

une autre chose à laquelle je devais faire attention est la variable de chemin pour m'assurer que mon environnement est utilisé

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

ma réponse juste pour tous les utilisateurs qui utilisent le projet Web Visual Studio Flesk:

Faites un clic droit sur "Environnement Python" et cliquez sur "Ajouter un environnement"

Hossein andarkhora
la source
0

Si vous utilisez Pycharm, c'est le problème de l'environnement virtuel.

Ainsi, au moment de la création de votre projet Python, vous devrez sélectionner l'option "Interpréteur existant" -> cliquer sur "Interpréteur système" -> sélectionner l'option correcte par exemple "* \ AppData \ Local \ Programmes \ Python \ Python3.6 \ python.exe ".

Vous pouvez également utiliser 'New Virtual Env', mais je viens de donner la solution rapide qui devrait fonctionner pour les utilisateurs de Pycharm.

Ashish Bansal
la source
0

Autre chose - si vous utilisez python3, assurez-vous de démarrer votre serveur avec python3 server.py, paspython server.py

Evan
la source
-1

Cela a fonctionné pour moi après la mise à niveau de pip:

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

J'ai trouvé cette réponse ici: https://stackoverflow.com/a/49748494/3197202

Ensuite, je pourrais simplement installer flask:

pip install flask
Ivanacorovic
la source