Python 无法在Django设置文件中获取环境变量
我试图在Django设置中读取一些环境变量,我在/home/user/.bashrc(后者在/etc/bash.bashrc)中定义了这些环境变量,但我得到的只是一个keyrerror异常。我知道已经设置了环境变量,因为我可以在终端中打印它们(echo$VAR_NAME)。这应该是微不足道的 这是我正在使用的代码Python 无法在Django设置文件中获取环境变量,python,linux,django,environment-variables,django-settings,Python,Linux,Django,Environment Variables,Django Settings,我试图在Django设置中读取一些环境变量,我在/home/user/.bashrc(后者在/etc/bash.bashrc)中定义了这些环境变量,但我得到的只是一个keyrerror异常。我知道已经设置了环境变量,因为我可以在终端中打印它们(echo$VAR_NAME)。这应该是微不足道的 这是我正在使用的代码 from django.core.exceptions import ImproperlyConfigured msg = "Set the %s environment varia
from django.core.exceptions import ImproperlyConfigured
msg = "Set the %s environment variable"
def get_env_variable(var_name):
try:
return os.environ[var_name]
except KeyError:
error_msg = msg % var_name
raise ImproperlyConfigured(error_msg)
OS_DB_USER = get_env_variable('MY_USER')
OS_DB_PASS = get_env_variable('MY_PASS')
OS_DB_DB = get_env_variable('MY_DB')
OS_GAME_LOGS = get_env_variable('DIR_LOGS')
我就是找不到丢失的东西。有什么建议吗
谢谢
编辑:使用mod_wsgi在Apache上运行。我已通过使用此解决方案解决了我的问题:
我自己最近才找到了原因 在apache/mod_wsgi下运行时,应用程序在不同的用户下运行,因此不会设置这些环境变量。你的选择是:
您是如何运行服务器的?我正在使用mod_wsgi在Apache上运行我的项目。这些应该在virtualhost文件中定义吗?对于流程环境变量,这些变量都不能严格工作。SetEnv指令只设置每个请求的WSGI环境变量,而不设置进程环境变量。在Apache用户的环境中设置内容不会有帮助,因为Apache是以root用户身份启动的,并且继承了一个干净的默认主机环境。您不希望向全局默认主机环境添加内容。作为特定用户使用守护程序模式也不会有任何帮助,因为用户登录脚本永远不会执行,所以现在可以通过这种方式提取环境变量。最简单的方法是将任何流程环境变量设置为加载的WSGI脚本文件的副作用。