python-dotenv reads key-value pairs from a .env file and can set them as
environment variables. It helps in the development of applications following the
12-factor principles.
pip install python-dotenvIf your application takes its configuration from environment variables, like a 12-factor application, launching it in development is not very practical because you have to set those environment variables yourself.
To help you with that, you can add python-dotenv to your application to make it
load the configuration from a .env file when it is present (e.g. in
development) while remaining configurable via the environment:
from dotenv import load_dotenv
load_dotenv() # reads variables from a .env file and sets them in os.environ
# Code of your application, which uses environment variables (e.g. from `os.environ` or
# `os.getenv`) as if they came from the actual environment.By default, load_dotenv() will:
- Look for a
.envfile in the same directory as the Python script (or higher up the directory tree). - Read each key-value pair and add it to
os.environ. - Not override existing environment variables (
override=False). Passoverride=Trueto override existing variables.
To configure the development environment, add a .env in the root directory of
your project:
.
├── .env
└── foo.py
The syntax of .env files supported by python-dotenv is similar to that of
Bash:
# Development settings
DOMAIN=example.org
ADMIN_EMAIL=admin@${DOMAIN}
ROOT_URL=${DOMAIN}/appIf you use variables in values, ensure they are surrounded with { and },
like ${DOMAIN}, as bare variables such as $DOMAIN are not expanded.
You will probably want to add .env to your .gitignore, especially if it
contains secrets like a password.
See the file format specification
for full details on .env syntax, multiline values, escape sequences, and
variable expansion.
- environs
- Honcho
- dump-env
- dynaconf
- parse_it
- django-dotenv
- django-environ
- python-decouple
- django-configuration
This project is currently maintained by Saurabh Kumar and Bertrand Bonnefoy-Claudet and would not have been possible without the support of these awesome people.