无法获得环境变量

时间:2015-07-12 02:41:42

标签: python flask environment-variables

在我要设置的__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']

我得到了正确的输出。

我使用以下内容在MY_KEY设置了/etc/profile

export MY_KEY="1234example_secret_key"

我在更改restart文件后profile了我的电脑。

有人知道这个问题是什么吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果您在主管和/或gunicorn下运行您的流程(判断但您评论的是),您可以使用主管环境配置参数。

[program:my_app]
...
environment = MY_KEY="ABCD",MY_KEY2="EFG"

你也可以使用gunicorn --env flag或env config file param。

gunicorn -b 127.0.0.1:8000 --env MY_KEY=ABCD test:app

第二个选项的缺点是任何有权访问您机器的人都可以看到您的密钥。

最好的方法是使用app.config.from_envvar函数并将配置存储到计算机特定的配置设置位置(这可能在加密文件系统上)。在这种情况下,您的代码将如下所示:

app = Flask(__name__)
...
app.config.from_envvar('MACHINE_SPECIFIC_SETTINGS')

您的MACHINE_SPECIFIC_SETTINGS env变量可能指向具有MY_KEY值的文件。

MACHINE_SPECIFIC_SETTINGS=/path/to/config.py