5

首先,我正在关注此处发布的 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 环境变量已设置,因为此命令执行良好:

$ flask run

任何人都可以建议为什么在运行应用程序时执行得很好,但在尝试创建迁移存储库时却没有?

我可以在该主题的其他地方找到最接近的内容:Flask can't find app file,但在这两种情况下,预先等待python -m对我来说都不起作用。

4

5 回答 5

6

就我而言,我必须这样做

python3 -m flask db init

不提python3 -m,它显示

zsh: command not found: flask
于 2020-02-01T14:08:43.017 回答
3

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

该命令flask db init因问题中报告的错误而失败。

所以我尝试python run.py了,但未能通过报告未满足的依赖项来启动应用程序,models.py其中实际上是导入中的错字。修复错字并重新运行python run.py成功。

然后我又试flask run了一次,还是没问题。然后flask db init……终于成功了。

报告它找不到的错误似乎run.py是误导或掩盖了它可以执行的真正根本原因。

于 2017-01-04T17:56:38.347 回答
2

在我的情况下,我的应用程序名称不同,在目录中,我有两个烧瓶应用程序app.pyapp_async.py 而且我也遇到了相同的迁移密钥错误,所以这就是我解决它的方法:

FLASK_APP=app_async.py flask db init

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

于 2021-04-03T19:27:36.670 回答
0

我遇到了同样的问题,一段时间后我注意到 set FLASK_APP=my_app,但我有一个处理创建和初始化应用程序的函数,所以我更改了 set 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 环境变量时,如果任何函数是创建应用程序的一部分,则该函数应在冒号后给出,即:set FLASK_APP:create_flask_app

于 2021-06-06T05:54:00.223 回答
0

这对我有用:

pip install flask-migrate --upgrade
于 2020-10-01T18:43:18.317 回答