使用wsgi在设置文件中获取virtualenv变量

时间:2014-06-02 16:55:19

标签: python django virtualenv virtualenvwrapper

我在我的settings.py文件中使用环境变量(安全原因)的Django应用程序:

SECRET_KEY = os.environ['SECRET_KEY']

SECRET_KEY变量已在我的<virtualenv_path>/bin/postactivate中设置:

export SECRET_KEY='trololo'

我已经使用apache部署了应用程序,所以我使用wsgi.py文件激活virtualenv:

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

不幸地Apache崩溃并出现以下错误:

  

KeyError:'SECRET_KEY'

我的配置有什么问题?

1 个答案:

答案 0 :(得分:1)

当您在bash中使用postactivate命令时,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))

您不需要单独的设置文件。