在 heroku 中为 flask app 设置环境变量

setting environment variables in heroku for flask app

我有一个 flask 应用程序,它为开发环境和生产环境使用不同的配置文件。相关的代码是这样的:

app.config.from_object('config.dev')
app.config.from_envvar('SPOTPIX_SETTINGS', silent=True)

当我在本地服务器上开发时,配置取自 config.dev,但是当我将代码推送到 heroku 时,我想设置 SPOTPIX_SETTINGS 环境变量以指向'config.prod' 文件。这可以在 heroku 命令行客户端中完成,如下所示:

heroku config:set SPOTPIX_SETTINGS= 

但是,我不知道等号右边应该写什么,因为我不能将生产配置文件的绝对路径分配给环境变量,因为这在heroku中是不一样的因为它在我的开发机器中。

非常感谢!

你应该使用 env variable 来查看你是在 dev 还是 heroku。

heroku config:set IS_HEROKU=True 

然后在你的文件中

import os
is_prod = os.environ.get('IS_HEROKU', None)

if is_prod:
    #here goes all your heroku config

我对你的项目一无所知,但 Heroku 有一个系统。

您可以使用命令行或网络输入它们,而不是将您的生产 (Heroku) 配置变量存储在文件中 UI。

命令行方法:

heroku config:set THEANSWERTOEVERYTHINGEVER=42

我喜欢网络 UI 方法,因为它很漂亮(在应用程序设置中)。

您将如何管理您的开发配置变量,您将在 .env 文件中编写 YAML 样式

# Contents of .env file in application root (GITIGNORE THIS)

# These are only for your development environment

THEANSWERTOEVERYTHINGEVER=42
ENVIRONMENT="DEVELOPMENT"

然后在你的申请文件中添加import os

您可以使用此语法获取配置变量 os.environ.get('THEANSWERTOEVERYTHINGEVER')

最后也是最重要的一步!

使用 heroku local 而不是 python mysweetapp.py 启动服务器。这将启动 Heorku 的服务器并为您加载本地配置变量。如果您没有,可能需要 Heroku Toolbelt。

都在这里了。 https://devcenter.heroku.com/articles/getting-started-with-python#define-config-vars