【发布时间】:2018-07-15 01:24:25
【问题描述】:
我正在尝试将Flask 应用程序部署到Heroku。我有一个函数用于初始化用@app.cli.command 装饰器包装的Postgres 数据库,因此我可以使用Flask cli 工具执行它。这个函数和flask教程here中初始化sqlite数据库的函数非常相似。
该功能在我的本地机器上运行良好,但不适用于我的 Heroku 部署:
(venv) solomon@prefect trip_test $ heroku run flask initdb
Running flask initdb on ⬢ tripp-exercise... up, run.6637 (Free)
Usage: flask [OPTIONS] COMMAND [ARGS]...
Error: No such command "initdb".
我阅读了一个较旧的 Stack Overflow 问题,我需要将 FLASK_APP 环境变量设置为我的应用程序的位置或我的应用程序的名称。我都试过了,但都没有奏效。这是我尝试设置 FLASK_APP 时使用的命令:
heroku config:set FLASK_APP=trip_test
heroku config:set FLASK_APP=/app
当我尝试运行heroku run flask initdb 时,这两个设置都给出了相同的结果(“错误:没有这样的命令“initdb”。”)。
感谢任何建议或解决方案。
【问题讨论】:
-
你试过烧瓶迁移吗??它也有助于在生产中初始化数据库
-
你定义了 procfile 吗?
-
是的,我有一个 procfile 文件。但是,我刚刚注意到
gunicorn失败了ModuleNotFoundError。我的 procfile 说web: gunicorn trip_test:app。trip_test是包含我的烧瓶应用程序的文件夹,它在__init__.py文件中定义。
标签: python heroku flask environment-variables