Introduction to Python Dotenv Package¶
The python-dotenv package is a library that allows you to store sensitive data such as API keys, database credentials, and other environment-specific settings in a .env file. This file is not committed to version control, ensuring that your sensitive data remains secure.
Why Use Dotenv?¶
- Keeps sensitive data separate from code
- Easy to switch between development, testing, and production environments
- Reduces the risk of exposing sensitive data in version control
Installation¶
To install the python-dotenv package, run the following command:
pip install python-dotenv
Basic Usage¶
Here's an example of how to use python-dotenv:
Step 1: Create a .env File¶
Create a new file named .env in the root of your project directory:
DB_HOST=localhost
DB_PORT=5432
DB_USER=myuser
DB_PASSWORD=mypassword
Step 2: Load Environment Variables¶
In your Python script, load the environment variables from the .env file using the load_dotenv function:
import os
from dotenv import load_dotenv
load_dotenv() # loads variables from .env file
db_host = os.getenv('DB_HOST')
db_port = os.getenv('DB_PORT')
db_user = os.getenv('DB_USER')
db_password = os.getenv('DB_PASSWORD')
print(f"DB Host: {db_host}")
print(f"DB Port: {db_port}")
print(f"DB User: {db_user}")
print(f"DB Password: {db_password}")
Example Use Case: Database Connection¶
Here's an example of using python-dotenv to connect to a PostgreSQL database:
import os
import psycopg2
from dotenv import load_dotenv
load_dotenv()
db_host = os.getenv('DB_HOST')
db_port = os.getenv('DB_PORT')
db_user = os.getenv('DB_USER')
db_password = os.getenv('DB_PASSWORD')
db_name = os.getenv('DB_NAME')
try:
conn = psycopg2.connect(
host=db_host,
port=db_port,
user=db_user,
password=db_password,
database=db_name
)
print("Connected to database!")
except psycopg2.Error as e:
print(f"Error connecting to database: {e}")
In this example, the database connection settings are stored in the .env file, and the python-dotenv package is used to load these settings into the Python script.
Best Practices¶
- Keep your
.envfile out of version control by adding it to your.gitignorefile. - Use meaningful variable names in your
.envfile. - Keep your
.envfile organized by grouping related variables together.
By following these best practices and using the python-dotenv package, you can keep your sensitive data secure and make it easy to switch between different environments.