首先,我正在关注此处发布的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
预先审核对我来说无效。
答案 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.py
和 app_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