【发布时间】:2015-07-12 02:41:42
【问题描述】:
在我尝试设置的__init__.py 文件中:
import os
app.config['SECRET_KEY'] = os.environ['MY_KEY']
但我得到了错误:
raise KeyError(key)
KeyError: 'MY_KEY'
当我运行printenv 时,变量MY_KEY 存在。
在IDLE我也试过运行:
import os
print os.environ['MY_KEY']
我得到了正确的输出。
我在/etc/profile 中设置MY_KEY 使用:
export MY_KEY="1234example_secret_key"
在对profile 文件进行更改后,我对我的计算机进行了restart。
有人知道问题出在哪里吗?
感谢您的帮助。
【问题讨论】:
-
你是如何运行你的烧瓶应用程序的?并非所有调用都会评估 /etc/profile。例如,系统的 apache 安装可能不会,具体取决于设置。
-
@pvg 我正在使用
Nginx/Gunicorn。我使用supervisor运行应用程序。 -
stackoverflow.com/questions/19054008/… 另一种可能更简单的方法是将这些信息放在 python 文件中并导入。远离源代码控制并让您的部署脚本生成它。使用不同的名称将模板版本置于源代码管理之下。因此,如果您有带有参数的 app_config.py,请维护一个 app_config_sample.py 用于文档目的。如果您想花哨,请让您的构建脚本生成 app_config 样本。
-
@Giri 您可以使用环境配置参数 environment = MY_KEY="ABCD",MY_KEY2="EFG" 将环境变量传递给主管进程。
-
@Giri 另一个选择是不使用 Flask 的默认加密 cookie 进行会话,而是使用像 Beaker 这样的东西。没有奇怪的密钥,没有向客户端来回发送敏感数据,整个事情就消失了。
标签: python flask environment-variables