【发布时间】:2013-07-18 19:37:32
【问题描述】:
我在 ec2 实例的环境变量中设置了一些用户名、密码和其他配置。我已经创建了一个 virtualenv 设置并在我运行 django 服务器的地方处于活动状态。在该 django 服务器的设置文件中,我以 os.environ['variable'] 的形式访问环境变量。
在 virtualenv 之外,站点可以正常访问这些变量。当我运行 printenv 时,我看到了所有的变量和值。
但是,当我在它们上调用 os.environ 时,服务器找不到它们并因此引发关键错误。
setup = ec2 实例 - mod_wsgi - nginx - apache
更新 这通过以下列方式设置 django.wsgi 中的变量开始工作。
os.environ['SQL_PASSWORD'] = 'password'
升级到新的 ec2 硬件后,仅此一项就停止工作了。我不确定这有什么关系。
现在,最终起作用的是在 apache 配置文件中使用 SetEnv 单独设置变量。仍然不是最佳选择,因为我必须在生产机器上检查配置文件,但它解除了我的阻止。
SetEnv SQL_PASSWORD password
【问题讨论】:
-
运行 printenv 时是否激活了 virtualenv?
-
是的,据我所知它是活跃的。
-
shell 提示符是这样说的。
-
你能得到任何环境变量吗?请显示触发问题的最小提取(至少显示您的导入和给出错误的行)。另外,我假设您正在运行 django,且 virtualenv 处于活动状态。
-
可能想看看:
print os.environ
标签: python django virtualenv