烧瓶应用程序获取"错误无法找到烧瓶应用程序。 ..... FLASK_APP环境变量"对于Flask Migrate

时间:2017-01-03 16:34:39

标签: python flask flask-sqlalchemy database-migration

我有一个文件db_table.py,如下所示:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@localhost/mydb'

db = SQLAlchemy(app)
migrate = Migrate(app, db)
.....db tables....

当我尝试跑步时:

flask db init

我明白了:

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

我首先尝试手动设置FLASK_APP var,然后执行set FLASK_APP=app.py,然后再次运行flask db init,但这并没有解决问题。

3 个答案:

答案 0 :(得分:7)

flask命令行参数需要知道在哪个模块中找到当前的Flask应用实例。

FLASK_APP设置为环境变量:

export FLASK_APP=db_table.py
在运行flask命令行应用程序之前

请参阅Command Line Interface documentation

  

要使烧瓶脚本起作用,需要发现一个应用程序。这是通过导出FLASK_APP环境变量来实现的。它可以设置为导入路径,也可以设置为包含Flask应用程序的Python模块的文件名。

您也可以通过在同一命令行上设置变量 per command

FLASK_APP=db_table.py flask db init

答案 1 :(得分:2)

您可以参考this documentation了解如何在Flask中设置环境变量。

Unix Bash(Linux,Mac等):

$ export FLASK_APP=hello
$ flask run

Windows CMD:

> set FLASK_APP=hello
> flask run

Windows PowerShell:

> $env:FLASK_APP = "hello"
> flask run

答案 2 :(得分:0)

如果使用DispatcherMiddleware(werkzeug.wsgi),则可能会发生某些问题。 将返回对象从app_dispatch更改为不带app_dispatch的应用程序以迁移时间。

这是一种罕见的情况,希望有人帮助...