Ко. Переменные не заданы при запуске приложения Minimal Flask

Я пытаюсь выполнить документацию на фляге на моем оконном компьютере, указанном по следующей ссылке: http://flask.pocoo.org/docs/0.11/quickstart/#debug-mode

Во-первых, я написал код ниже в python script:

from flask import Flask
app = Flask(__name__)

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

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

Я сохранил это в файле с именем run.py

Затем написал эту команду в окне команд:

set FLASK_APP = run.py 
flask run

При запуске этого процесса я получаю следующую ошибку:

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

Я ожидал получить это вместо:

Running on http://127.0.0.1:5000/

Может кто-нибудь сказать мне, как это исправить?

Ответ 1

Я столкнулся с той же проблемой при использовании PowerShell, и это исправление работало для меня:
вместо set FLASK_APP = run.py, попробуйте $env:FLASK_APP = "run.py"

Ответ 2

Если вы используете powershell, это не работает, я не знаю, почему используйте cmd.exe так как я использую редактор VScode, он предоставляет powershell в качестве терминала (ctrl+) по умолчанию, поэтому я пытался запустить флеш-приложение на PowerShell, и это давало мне тот же ответ, что и вы получаете

1) откройте cmd.exe(или если вы VSCode, как я просто пишу cmd на этом терминале)

2) set FLASK_APP=hello.py (без пробелов, только для первого запуска, затем он запоминает до перезапуска cmd)

3) flask run (или будет работать только колба)

note: это только для пользователей Windows

Ответ 3

  • export FLASK_APP=run.py
  • flask run --host=0.0.0.0

затем может нормально работать, вывести что-то вроде:

 * 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

Ответ 4

Вы запустили свой терминал в качестве администратора? У меня была та же проблема и запуск cmd/PowerShell, поскольку admin исправил это для меня.

Править: Я говорил слишком рано. Выполнение как admin ничего не делал.

Реальный ответ (по крайней мере, на мою проблему) представляет собой комбинацию некоторых других ответов.

  • Вместо использования set FLASK_APP = myApp.py используйте setx FLASK_APP myApp.py
  • Перезагрузите терминал, и FLASK_APP получит новое значение

Ответ 5

Интересно, почему этого нет в ответе?

Вот простое решение:

добавить app.run (порт = 5000)

from flask import Flask
app = Flask(__name__)

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

app.run(port=5000)

а затем в том же каталоге запустить команду

python run.app

Ответ 6

Вы должны установить переменную FLASK_APP за пределы виртуальной среды. Я предполагаю, что он работал после того, как @Fang перезапустил командное окно, потому что это действие автоматически вышло из виртуальной среды.

Итак, если вы находитесь в виртуальной среде (обозначенной символом (venv) в начале строки в окне командной строки), введите следующие команды:

deactivate

set FLASK_APP=run.py

venv\scripts\activate

flask run

Ответ 7

Ваш код верен. Попробуйте установить переменную командной строки следующим образом:

setx FLASK_APP run.py

И затем запустите его: flask run.

Ответ 8

Успех с setx FLASK_APP test.py. Примечание: если не запустить, закройте командную строку и запустите другую.

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 -

Ответ 9

Просто опустите пространство вокруг '='!

Через полчаса, чтобы найти решение, я наконец понял, что означает "Вы не указали переменную среды FLASK_APP". Потому что я установил переменную "FLASK_APP" (с пробелом).

Ответ 10

Я исправил ту же проблему, закрыв окно команды и перезапустив ее.

Ответ 11

имела аналогичную проблему. были решены с помощью следующего: фляжка --no-reload

узнал об этом из документации флагов http://flask.pocoo.org/docs/0.12/server/

Ответ 12

У меня была такая же проблема, когда я запускал первый мир hello для фляжки.

В идеале не должно быть места между поэтому используйте установить FLASK_APP = run.py

Ответ 13

Просто отбросьте пробел вокруг знака. set FLASK_APP = python_file_name.py

Ответ 14

У меня была такая же проблема, но в PowerShell у меня работала следующая команда:

python -m flask run

Ответ 15

У меня была такая же проблема с запуском команд, как указано в быстром запуске Flask. использование Powershell на окнах 10

projects>set export FLASK_APP=hello.py
projects>flask run
 * Running on http://127.0.0.1:5000/

Мне нужно было набрать python <filename.py>, находясь в каталоге, содержащем файл с   из фляжки импорт Фланец   app = Flask (имя)

@app.route('/')
def hello_world():
    return 'Hello, World!

после этого вы получите сообщение с IP-адресом в нем

 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

вы копируете IP-адрес в своем браузере, а затем к этому моменту вы должны увидеть свое утверждение приветствия.