无法在Django设置文件中获取环境变量

时间:2013-05-06 09:13:21

标签: python linux django environment-variables django-settings

我正在尝试在Django设置中读取一些环境变量,我已经在/home/user/.bashrc中定义了(后者在/etc/bash.bashrc中),但我得到的只是一个KeyError异常。我知道我的环境变量已设置,因为我可以在终端中打印它们(echo $ VAR_NAME)。这应该是微不足道的。

这是我正在使用的代码。

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上运行。

2 个答案:

答案 0 :(得分:9)

我已经设法通过使用此解决方案来解决我的问题:

http://drumcoder.co.uk/blog/2010/nov/12/apache-environment-variables-and-mod_wsgi/

答案 1 :(得分:1)

我最近刚刚找到了原因。

在apache / mod_wsgi下运行时,您的应用程序在不同的用户下运行,因此未设置这些环境变量。您的选择是:

  1. 在虚拟主机配置中使用apache SetEnv指令,
  2. 为apache运行代码的用户设置环境变量,或
  3. 告诉apache以您的用户身份运行wsgidaemon进程。