烧瓶说 "did not provide the FLASK_APP environment variable"

Flask says "did not provide the FLASK_APP environment variable"

我正在尝试 运行 带有 flask run 的 Flask 应用程序,但无论如何,我收到此错误:

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

我在我的项目中使用 virtualenv,我 运行 在端口 80 上运行应用程序,所以我 运行 作为超级用户执行命令。最终,我只需要使用 Flask-Migrate 的 docs 中描述的 flask db init 命令,但 flask 需要能够找到应用程序来执行此操作。这是我尝试过的方法,但没有成功:

导出 FLASK_APP 环境变量,确保它在我的 bash 配置文件中,然后激活 virtualenv

$ export FLASK_APP=run.py
$ printenv FLASK_APP
run.py
$ . env/bin/activate
(env) $ sudo flask run
Error: Could not locate Flask application. You did not provide the     FLASK_APP environment variable.

激活virtualenv,然后导出FLASK_APP

$ . env/bin/activate
(env) $ export FLASK_APP=run.py
(env) $ printenv FLASK_APP
run.py
(env) sudo flask run
Error: Could not locate Flask application. You did not provide the     FLASK_APP environment variable.

以上两个带全路径,/Users/me/code/project/run.py

$ printenv FLASK_APP
/Users/me/code/project/run.py

项目结构

myproject/
    ├──app/
    |  ├── __init__.py
    |  ├── models.py
    |  ├── templates/
    |  └── views.py
    ├── tests/
    ├── run.py
    ├── requirements.txt
    └── config.py

到目前为止没有任何效果,每种情况下的错误消息都是相同的。我该怎么做才能修复此错误?

假设您在初始化文件中调用 app=App(__name__)。试试这个,尽管从技术上讲它也应该与 run.py 一起使用。

export FLASK_APP=app/__init__.py; flask run

稍后再尝试执行 echo $FLASK_APP 以查看值 实际上 是否存储在 flask 直接访问的环境变量中,而不仅仅是 bash个人资料。

当我从 sudo flask run 中删除 sudo 时,Flask 找到 $FLASK_APP。但是,我收到错误消息 socket.error: [Errno 13] Permission denied。我看不出解决这个问题的方法,因为当我作为超级用户 运行 时,Flask 找不到 $FLASK_APP。好像是循环逻辑。

我已经通过将端口从 80 更改为 5000 并将 sudo 改为 flask run 来 运行 Flask。这很好,不过我必须找到一种方法 运行 生产环境中端口 80 上的应用程序。

在删除并重新创建我的数据库并删除对 db.create_all.

的调用后,我能够 运行 flask db init

编辑 - 2017 年 4 月 27 日 端口 80 确实被我服务器上的防火墙阻止了(防火墙超出了我的控制范围)所以 运行 应用程序在一个开放的端口上解决了这个问题。

在 Powershell 下,您必须按如下方式设置 FLASK_APP 环境变量:

$env:FLASK_APP = "webapp"

那么您应该可以运行 python -m flask run hello_app 文件夹中。换句话说,PowerShell 以不同的方式管理环境变量,因此标准命令行 set FLASK_APP=webapp 将不起作用。

如果您在 Windows,请确保没有 space 左右等于 :

set FLASK_APP=app.py

而不是

set FLASK_APP = app.py

我就是这样。由于 spaces.

,我收到“您没有提供 FLASK_APP 环境变量”错误

看起来您正在终端中使用 bash shell。阅读烧瓶 2.0 文档。命令应该是 export FLASK_APP=运行 并且没有扩展名

我遇到了同样的问题。我在 VS 代码中使用 Python 3.10。

C:\Users\hansr>flask --version
Python 3.10.1
Flask 2.0.3
Werkzeug 2.0.3

USING set FLASK_APP='main.py' 对我不起作用并抛出上述相同的错误。

尝试:

$env:FLASK_APP = "main"
python -m flask run

REFERENCE