python-dotenv: Load environment variables from .env files
Parse and load .env files into Python environments.
Learn more about python-dotenv
python-dotenv is a Python library for parsing and loading environment configuration from .env files into the process environment. It reads files using Bash-like syntax, supporting features such as variable expansion, multiline values, and quoted strings. The library provides both programmatic APIs (load_dotenv and dotenv_values functions) and a command-line interface for managing .env files. It is commonly used in development workflows to avoid hardcoding configuration values while maintaining compatibility with production systems that source configuration from actual environment variables.
Non-destructive loading
By default, load_dotenv does not override existing environment variables unless explicitly configured, allowing environment variables set outside the .env file to take precedence.
Multiple loading modes
Supports loading from filesystem paths, searching up the directory tree, or parsing from arbitrary streams such as StringIO objects, enabling configuration from various sources beyond .env files.
Bash-like syntax support
Implements Bash-compatible .env file parsing including variable expansion with ${VAR} syntax, multiline values, and quoted string handling, reducing the need to learn a separate configuration format.
from dotenv import load_dotenv
import os
# Load variables from .env file into environment
load_dotenv()
# Access environment variables
api_key = os.getenv('API_KEY')
database_url = os.getenv('DATABASE_URL')
print(f"Connected to: {database_url}")v1.2.1
- –Support reading.env from FIFOs (Unix) by @sidharth-sudhir in
- –Update CI to use trusted publishing on PyPI
- –@sidharth-sudhir made their first contribution in
v1.2.0
- –style: upgrade to use ruff by @theskumar in
- –Use sys.exit() instead of exit() by @theskumar in
- –feat: add `PYTHONDOTENVDISABLED` flag to disable load_dotenv (fixes #510) by @matthewfranglen in
- –Added Python@3.14: Github CI & tox.ini by @23f3001135 in
- –ocs: clarify what load_dotenv() does in README by @cybercoded in
v1.1.1: fix: ensure find_dotenv work reliably on python 3.13 by @theskumar in
- –fix: ensure find_dotenv work reliably on python 3.13 by @theskumar in
- –fix(cli): issue with execvpe on Windows by @wrongontheinternet in
- –@wrongontheinternet made their first contribution in
Top in Developer Tools
Related Repositories
Discover similar tools and frameworks used by developers
statsd
UDP/TCP metrics collector with pluggable backend support.
plotly.py
Interactive browser-based charts from Python with declarative API.
Build Your Own X
Curated guides for recreating popular technologies from scratch, from 3D renderers to operating systems.
Floki
Elixir HTML parser with CSS selectors and multiple parser backends.
CXX
Safe FFI library for calling C++ from Rust and vice versa with zero-overhead bindings via code generation.