14

我正在尝试读取 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 上运行。

4

2 回答 2

11

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

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

于 2013-05-06T10:18:48.297 回答
1

我最近才自己发现了这个问题的原因。

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

  1. 在您的虚拟主机配置中使用 apache SetEnv 指令,
  2. 为 apache 运行您的代码的用户设置环境变量,或者
  3. 告诉 apache 以您的用户身份运行 wsgidaemon 进程。
于 2015-07-21T02:23:38.827 回答