在wsgi中获取设置文件中的虚拟环境变量

0 投票
1 回答
610 浏览
提问于 2025-04-18 08:18

我有一个使用环境变量的Django应用程序(出于安全考虑),这些变量在我的 settings.py 文件中设置:

SECRET_KEY = os.environ['SECRET_KEY']

SECRET_KEY 这个变量是在我的 <virtualenv_path>/bin/postactivate 文件中设置的:

export SECRET_KEY='trololo'

我已经用Apache部署了这个应用,所以我使用了 wsgi.py 文件来激活虚拟环境:

activate_env=os.path.expanduser(envP + "/bin/activate_this.py")
execfile(activate_env, dict(__file__=activate_env))

不幸的是,Apache 出现了崩溃,错误信息是:

KeyError: 'SECRET_KEY'

我的配置哪里出了问题呢?

1 个回答

1

postactivate 文件是一个钩子,当你在 bash 中使用 workon 命令时会被调用。在你的情况下,你调用的是 Python 脚本 activate_this.py

我管理我的设置也是这样,但我有一个 postactivate_this.py 文件,用来设置我的环境变量,就像在我的 postactivate 文件中一样:

from os import environ

environ["DJANGO_SECRET_KEY"] = "..."
# etc.

然后在你的 wsgi.py 文件中,你可以写:

activate_env = os.path.expanduser(envP + '/bin/activate_this.py')
postactivate_env = os.path.expanduser(envP + '/bin/postactivate_this.py')

execfile(activate_env, dict(__file__=activate_env))
execfile(postactivate_env, dict(__file__=postactivate_env))

你不需要一个单独的设置文件。

撰写回答