Flask-Migrate命令'flask db init'找不到app文件

时间:2017-01-03 11:35:27

标签: python flask flask-sqlalchemy flask-migrate

首先,我正在关注此处发布的Python Flask教程:https://scotch.io/tutorials/build-a-crud-web-app-with-python-and-flask-part-one

一切顺利进行到“迁移”部分执行:

$ flask db init

...因以下错误而失败:

Usage: flask db init [OPTIONS]

Error: The file/path provided (run) does not appear to exist.  Please verify the path is correct.  If app is not on PYTHONPATH, ensure the extension is .py

我知道$ FLASK_APP env变量已设置,因为此命令执行正常:

$ flask run

有人可以建议为什么在运行应用程序时执行此操作,但在尝试创建迁移存储库时却没有?

我在其他地方找到的最接近的主题是:Flask can't find app file,但python -m预先审核对我来说无效。

5 个答案:

答案 0 :(得分:3)

命令flask run成功启动了应用程序。

命令flask db init失败,问题中报告了错误。

所以我尝试了python run.py,并且通过报告models.py中未满足的依赖项而无法启动应用程序,这实际上是导入中的拼写错误。修复拼写错误并重新运行python run.py成功。

然后我再次尝试flask run,仍然很好。然后flask db init ......终于成功了。

看来错误报告它无法找到run.py是误导或掩盖其可以执行的真正根本原因。

答案 1 :(得分:3)

就我而言,我必须这样做

python3 -m flask db init

没有提及python3 -m,它显示

zsh: command not found: flask

答案 2 :(得分:1)

就我而言,我的应用程序名称不同,并且在目录中,我有两个 Flask 应用程序 app.pyapp_async.py 而且我也遇到了相同的迁移密钥错误,所以我是这样解决的:

FLASK_APP=app_async.py flask db init

这里我提到了应用名称,然后运行了命令。

答案 3 :(得分:0)

这对我有用:

pip install flask-migrate --upgrade

答案 4 :(得分:0)

我遇到了同样的问题,一段时间后我注意到设置 FLASK_APP=my_app,但是我有一个处理创建和初始化应用程序的函数,所以我更改了设置 FLASK_APP=my_app:crate_flask_app,最终它对我有用。 例如:在 my_app/init.py

migrate=Migrate()
db=Sqlalchemy()
defcreate_flask_app():
 app=Flask(__name__)
 db.init_app(app)
 migrate.init_app(app,db)
 return app

windows 的解决方案是在声明 FLASK_APP 环境变量时,如果任何函数是创建应用程序的一部分,那么函数应该在冒号之后给出 i,e:set FLASK_APP:create_flask_app