Create a gist now

Instantly share code, notes, and snippets.

Embed
Django manage.py file that loads environment variables from a .env file per Honcho/Foreman
#!/usr/bin/env python
import os
import sys
import re
def read_env():
"""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') 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)
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings")
from django.core.management import execute_from_command_line
read_env()
execute_from_command_line(sys.argv)
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
@bennylope

This comment has been minimized.

Show comment
Hide comment
@bennylope

bennylope Jul 26, 2012

See the blog post for more explanation of how and why.

This will read default environment variables from your local .env file, e.g.

DATABASE_URL='postgres://dbuser:dbpass@localhost/mydb'
DEBUG=False
FACEBOOK_APP_ID='51821095311150'
FACEBOOK_API_SECRET='fj43dfe897f612cf3448ce34f0f6ad1a1'
Owner

bennylope commented Jul 26, 2012

See the blog post for more explanation of how and why.

This will read default environment variables from your local .env file, e.g.

DATABASE_URL='postgres://dbuser:dbpass@localhost/mydb'
DEBUG=False
FACEBOOK_APP_ID='51821095311150'
FACEBOOK_API_SECRET='fj43dfe897f612cf3448ce34f0f6ad1a1'
@AndrewJHart

This comment has been minimized.

Show comment
Hide comment
@AndrewJHart

AndrewJHart Dec 9, 2013

thx perfect for shell testing

thx perfect for shell testing

@vegaro

This comment has been minimized.

Show comment
Hide comment
@vegaro

vegaro May 2, 2015

You saved my day, thanks!

vegaro commented May 2, 2015

You saved my day, thanks!

@Flimm

This comment has been minimized.

Show comment
Hide comment
@Flimm

Flimm Oct 11, 2016

I like using this Python module: https://github.com/theskumar/python-dotenv

Flimm commented Oct 11, 2016

I like using this Python module: https://github.com/theskumar/python-dotenv

@kishorevbhosale

This comment has been minimized.

Show comment
Hide comment
@kishorevbhosale

kishorevbhosale Mar 3, 2017

nice one!

nice one!

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Feb 1, 2018

Why not just return instead of setting content = '' ?

ghost commented Feb 1, 2018

Why not just return instead of setting content = '' ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment