23

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

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

我在我的项目中使用 virtualenv,我在端口 80 上运行应用程序,所以我以超级用户身份运行命令。最终,我只需要使用Flask-Migrate 的文档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

到目前为止,没有任何效果,并且每种情况下的错误消息都是相同的。我能做些什么来解决这个错误?

4

5 回答 5

21

假设你调用app=App(__name__)你的 init 文件。试试这个,即使从技术上讲它也应该与 run.py 一起工作。

export FLASK_APP=app/__init__.py; flask run

还可以稍后尝试echo $FLASK_APP查看该值是否实际存储在烧瓶直接访问的环境变量中,而不仅仅是 bash 配置文件。

于 2016-11-17T06:38:13.093 回答
20

如果您使用的是 Windows,请确保 equal 周围没有空格:

set FLASK_APP=app.py

代替

set FLASK_APP = app.py

这就是发生在我身上的事。由于空格,我收到“您没有提供 FLASK_APP 环境变量”错误。

于 2019-11-17T08:07:27.300 回答
15

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

$env:FLASK_APP = "webapp"

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

于 2019-03-06T02:32:49.263 回答
6

当我从 下降sudosudo flask run,Flask 发现$FLASK_APP. 但是,我收到错误消息socket.error: [Errno 13] Permission denied$FLASK_APP我无法解决这个问题,因为当我以超级用户身份运行时Flask 找不到。似乎是循环逻辑。

我设法通过将端口从 80 更改为 5000 并sudo使用flask run. 这很好,不过我必须找到一种方法在生产中的端口 80 上运行该应用程序。

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

编辑 - 4/27/17端口 80 确实被我服务器上的防火墙阻止(防火墙超出了我的控制),因此在开放端口上运行应用程序解决了这个问题。

于 2016-11-17T20:55:54.560 回答
0

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

于 2021-09-08T15:33:58.963 回答