Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot get environment variables in Django settings file

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.

like image 474
luistm Avatar asked May 06 '13 09:05

luistm


People also ask

Where are environment variables stored Django?

Environment variables live in the memory, not on the disk.

Where is the Django settings file?

A Django settings file doesn't have to define any settings if it doesn't need to. Each setting has a sensible default value. These defaults live in the module django/conf/global_settings.py .

How do I access Django settings?

email_password = settings. EMAIL_PASS #to access that variable.


1 Answers

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/

like image 160
luistm Avatar answered Sep 23 '22 10:09

luistm