Skip to content

Instantly share code, notes, and snippets.

@eloyz
Created March 23, 2013 03:42
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 eloyz/5226342 to your computer and use it in GitHub Desktop.
Save eloyz/5226342 to your computer and use it in GitHub Desktop.
Function that reads environment variables from .env file and adds them to the os.environment dictionary.
# manage.py in Django project
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)
# within __name__ == "main"
read_env()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment