web-dev-qa-db-fra.com

Env. Variables non définies lors de l'exécution de l'application Minimal Flask

J'essaie de suivre la documentation du flacon sur ma machine Windows au lien suivant: http://flask.pocoo.org/docs/0.11/quickstart/#debug-mode

Tout d'abord, j'ai écrit le code ci-dessous dans un script python:

from flask import Flask
app = Flask(__name__)

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

if __== "__main__":
    app.run(debug=True)

Je l'ai enregistré dans un fichier appelé run.py

Puis écrit cette commande dans la fenêtre de commande:

set FLASK_APP = run.py 
flask run

En exécutant ceci, j'obtiens l'erreur suivante:

"Error: Could not locate flask application. You did not provide the FLASK_APP environment variable"

Je m'attendais à obtenir ceci à la place:

Running on http://127.0.0.1:5000/

Quelqu'un peut-il me dire comment résoudre ce problème?

17
Batool

J'avais le même problème lorsque j'utilisais PowerShell et ce correctif fonctionnait pour moi:
au lieu d’utiliser set FLASK_APP = run.py, essayez $env:FLASK_APP = "run.py"

42
Folky

Si vous utilisez PowerShell cela ne fonctionne pas, je ne sais pas pourquoi Veuillez utiliser cmd.exe Puisque j'utilise VScode Editor, il fournit powershell sous forme de terminal (ctrl+) par défaut, de sorte que je tentais d'exécuter l'application flask sur le PowerShell il me donnait la même réponse que vous obtenez

1) ouvrez cmd.exe (ou si vous êtes VSCode utilisateur comme moi, écrivez simplement cmd sur ce terminal)

2) set FLASK_APP=hello.py (sans espaces, uniquement pour la première exécution, puis rappelez-vous jusqu'au redémarrage de cmd)

3) flask run (ou seulement le flacon fonctionnera également)

note: ceci est seulement pour l'utilisateur Windows

9
Inzamam Malik
  1. export FLASK_APP=run.py
  2. flask run --Host=0.0.0.0

puis peut fonctionner normalement, sortie quelque chose comme:

 * Serving Flask app "hello"
 * Forcing debug mode on
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger pin code: 353-795-063
7
crifan

Avez-vous exploité votre terminal en tant qu'administrateur? J'ai eu le même problème, et l'exécution de cmd/PowerShell en tant qu'administrateur a corrigé le problème.

Edit: j'ai parlé trop tôt. Courir en tant qu'administrateur n'a rien fait.

La vraie réponse (à mon problème, du moins) est une combinaison de certaines des autres réponses.

  1. Au lieu d'utiliser set FLASK_APP = myApp.py, utilisez setx FLASK_APP myApp.py
  2. Redémarrez le terminal et FLASK_APP aura la nouvelle valeur
3
Sam Underwood

Je me demande pourquoi cela manque à la réponse.

Voici une solution simple:

ajouter app.run (port = 5000)

from flask import Flask
app = Flask(__name__)

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

app.run(port=5000)

puis dans le même répertoire, exécutez la commande

python run.app
2
Vikrant Shitole

Il suffit de laisser l’espace autour de '='!

Après une demi-heure de recherche d’une solution, j’ai enfin compris ce que signifie «Vous n’avez pas fourni la variable d’environnement FLASK_APP». Parce que ce que j'ai défini est la variable 'FLASK_APP' (avec espace).

1
Barry Zhai

Succès avec setx FLASK_APP test.py. Remarque: s'il n'est pas exécuté, fermez la ligne de commande et démarrez-en une autre.

D:\projects\flask-oauthlibpy2>.evn\Scripts\activate

(.evn) D:\projects\flask-oauthlibpy2>setx FLASK_APP test.py

SUCCESS: Specified value was saved.

(.evn) D:\projects\flask-oauthlibpy2>flask run
 * Serving Flask app "flask-oauthlibpy2.test"
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [24/May/2017 14:35:06] "GET / HTTP/1.1" 200 -
1
nguyên

Vous devez définir la variable FLASK_APP en dehors de l'environnement virtuel. Je suppose que la raison pour laquelle cela a fonctionné après le redémarrage de @Fang dans la fenêtre de commande est que cette action a automatiquement quitté l'environnement virtuel.

Ainsi, si vous êtes dans l'environnement virtuel (indiqué par un (venv) au début de la ligne dans la fenêtre de commande), tapez les commandes suivantes:

deactivate

set FLASK_APP=run.py

venv\scripts\activate

flask run
1
cph2117

J'ai résolu le même problème en fermant la fenêtre de commande et en la redémarrant. 

0
Fang

Votre code est correct. Essayez de définir la variable de ligne de commande comme ceci: 

setx FLASK_APP run.py

Et puis exécutez-le: flask run.

0
Dhruv Ramani

eu un problème similaire. a été résolu en utilisant les éléments suivants: flask run --no-reload

appris cela grâce à la documentation de la fiole http://flask.pocoo.org/docs/0.12/server/

0
Gaurav

J'avais le même problème en exécutant le premier monde de hello for flask.

Idéalement, il ne devrait pas y avoir d'espace entre Utilisez donc Set FLASK_APP = run.py

0
pious tiwari