Question

I'm trying to read some environment variables in Django settings, which i have defined in /home/user/.bashrc (and latter in /etc/bash.bashrc ) , but all i get is a KeyError exception. I know my environment variables are set, because i can print them in the terminal (echo $VAR_NAME). This should be trivial.

This is the code i'm using.

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')

I just can't find what's missing. Any suggestions out there?

Thanks

EDIT: Running on Apache with mod_wsgi.

Was it helpful?

Solution

I've manage to solve my problem by using this solution:

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

OTHER TIPS

I've just recently found the cause of this myself.

When running under apache/mod_wsgi, your application runs under a different user, so those environment variables are not set. Your options are:

  1. Use apache SetEnv directive in your virtualhost config,
  2. Set the environment variables for the user that apache runs your code as, or
  3. Tell apache to run the wsgidaemon process as your user.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top