无法获取环境变量在Django配置文件(Cannot get environment variabl

2019-09-02 02:01发布

我想读在Django的设置,我在/home/user/.bashrc定义(在/etc/bash.bashrc后者)一些环境变量,但我得到的是一个KeyError异常例外。 我知道我的环境变量设置,因为我可以在终端(回声$ 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。

Answer 1:

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

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



Answer 2:

我最近刚刚发现这一点我自己的原因。

当在阿帕奇/ mod_wsgi的运行,你的应用程序不同的用户下运行,因此这些环境变量没有设置。 你的选择是:

  1. 使用Apache SETENV指令在你的虚拟主机配置,
  2. 设置环境变量运行Apache代码作为用户,或
  3. 告诉Apache运行wsgidaemon过程,您的用户。


文章来源: Cannot get environment variables in Django settings file