14

/home/user/.bashrc (および後者は /etc/bash.bashrc ) で定義した Django 設定でいくつかの環境変数を読み込もうとしていますが、取得するのは 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. virtualhost 設定で apache SetEnv ディレクティブを使用します。
  2. Apache がコードを実行するユーザーの環境変数を設定するか、または
  3. ユーザーとして wsgidaemon プロセスを実行するように apache に指示します。
于 2015-07-21T02:23:38.827 に答える