gpt4 book ai didi

Python (django) 环境变量

转载 作者:太空宇宙 更新时间:2023-11-04 05:37:42 26 4
gpt4 key购买 nike

我正在使用 django 和 virtualenvwrapper。我的目标是根据 12Factor 应用程序建议 (http://12factor.net) 从设置文件中删除所有敏感信息,并最终部署到 heroku。在本地测试时,为了实现这一点,我创建了一个具有不同变量值(如 SECRET_KEY)的 .env 文件。我转到我的 virtualenv 目录并将以下行添加到 postactivate 脚本中:

source .env 

每当我为项目 aka workon project_name 启动我的虚拟环境时,如果我从终端回显,来自 .env 的环境变量可用

$ echo $SECRET_KEY
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

但是,当我尝试从 python 访问这些变量时,它们不可用

>>> import os
>>> os.environ.get('SECRET_KEY')
>>>

python访问存储在.env文件中的环境变量的正确方法是什么?

.env 文件:

WEB_CONCURRENCY=2
SECRET_KEY='XXXXXXXXXXXX'
DEBUG=True

最佳答案

我认为你的问题是你通过 SECRET_KEY=xxxxxxx 在你当前的 shell 中定义它,但是当你打开一个 python shell 时,它在一个子进程中运行并且你丢失了环境该外壳中的变量。 export 也会使变量在子进程中可用。

你应该:

export SECRET_KEY=xxxxxxxx

在你的 .env 文件中让它工作。

编辑:

从我从您的链接中读到的内容来看,这只是一个普通的 linux shell 环境变量。但是 django 需要在设置中将 SECRET_KEY 作为 python 常量。 Linux 环境变量和 python 变量是两个不同的东西,所以定义一个环境变量 SECRET_KEY 不会让 django 识别 settings.SECRET_KEY。您仍然应该考虑使用单独的设置文件,这是我们最推荐的。

关于Python (django) 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35092775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com