Skip to content

Instantly share code, notes, and snippets.

@rckclmbr
Created December 3, 2014 21:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rckclmbr/478c3855f8b2d4f3a61a to your computer and use it in GitHub Desktop.
Save rckclmbr/478c3855f8b2d4f3a61a to your computer and use it in GitHub Desktop.
def env_var(key, default=None):
"""Retrieves env vars and makes Python boolean replacements"""
val = os.environ.get(key, default)
if val == 'True':
val = True
elif val == 'False':
val = False
elif val == 'None':
val = None
return val
ef read_env(env_file):
"""Pulled from Honcho code with minor updates, reads local default
environment variables from a .env file located in the project root
directory.
"""
try:
with open(env_file) as f:
content = f.read()
except IOError:
content = ''
for line in content.splitlines():
m1 = re.match(r'\A([A-Za-z_0-9]+)=(.*)\Z', line)
if m1:
key, val = m1.group(1), m1.group(2)
m2 = re.match(r"\A'(.*)'\Z", val)
if m2:
val = m2.group(1)
m3 = re.match(r'\A"(.*)"\Z', val)
if m3:
val = re.sub(r'\\(.)', r'\1', m3.group(1))
os.environ.setdefault(key, val)
# usage:
# do this once:
read_env(env_var("ENV_FILE", ".env"))
# then for any config you do, do:
CELERY_BROKER_URL = env_var('CELERY_BROKER_URL', 'amqp://guest@localhost//')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment