ros*_*din 5 flask flask-migrate
我正在尝试运行Flask应用程序,flask run但无论如何,我收到此错误:
Error: Could not locate Flask application. You did not provide the FLASK_APP environment variable.
Run Code Online (Sandbox Code Playgroud)
我在我的项目中使用virtualenv,我在端口80上运行应用程序,所以我以超级用户身份运行命令.最后,我只需要使用flask db initFlask-Migrate 文档中描述的命令,但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.
Run Code Online (Sandbox Code Playgroud)
激活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.
Run Code Online (Sandbox Code Playgroud)
以上两条全路径, /Users/me/code/project/run.py
$ printenv FLASK_APP
/Users/me/code/project/run.py
Run Code Online (Sandbox Code Playgroud)
项目结构
myproject/
???app/
| ??? __init__.py
| ??? models.py
| ??? templates/
| ??? views.py
??? tests/
??? run.py
??? requirements.txt
??? config.py
Run Code Online (Sandbox Code Playgroud)
到目前为止,没有任何工作,错误信息在每种情况下都是相同的.我该怎么做才能解决这个错误?
u2g*_*les 17
如果您使用的是 Windows,请确保 equal 周围没有空格:
set FLASK_APP=app.py
Run Code Online (Sandbox Code Playgroud)
代替
set FLASK_APP = app.py
Run Code Online (Sandbox Code Playgroud)
这就是发生在我身上的事情。由于空格,我收到“您没有提供 FLASK_APP 环境变量”错误。
假设您调用app=App(__name__)了init文件.尝试这一点,即使从技术上讲,它应该与run.py一起使用.
export FLASK_APP=app/__init__.py; flask run
Run Code Online (Sandbox Code Playgroud)
还可以尝试echo $FLASK_APP稍后查看该值是否实际存储在烧瓶直接访问的环境变量中,而不仅仅是bash配置文件.
小智 8
在Powershell下,您必须FLASK_APP按如下方式设置环境变量:
$env:FLASK_APP = "webapp"
Run Code Online (Sandbox Code Playgroud)
然后您应该能够python -m flask run在 hello_app 文件夹中运行。换句话说,PowerShell 以不同的方式管理环境变量,因此标准命令set FLASK_APP=webapp行将不起作用。
当我sudo离开时sudo 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 确实被我服务器上的防火墙阻止(防火墙超出了我的控制范围),因此在开放端口上运行应用程序解决了该问题。
| 归档时间: |
|
| 查看次数: |
25957 次 |
| 最近记录: |