Need an example and please explain me the purpose of python-dotenv.
I am kind of confused with the documentation.
The dotenv is a zero-dependency module that loads environment variables from a . env file into process. env . Storing configuration in the environment separate from code is based on the Twelve-Factor App methodology.
The . env file contains the individual user environment variables that override the variables set in the /etc/environment file. You can customize your environment variables as desired by modifying your . env file.
python-dotenv 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.
Python-dotenv can interpolate variables using POSIX variable expansion. With load_dotenv (override=True) or dotenv_values (), the value of a variable is the first of the values defined in the following list: Value of that variable in the .env file. Value of that variable in the environment. Default value, if provided.
The load_dotenv () function by default searches for a file called .env file located in the same directory as the Python file. You can override this behavior by passing the dotenv_path argument as such: You may want to have all the settings grouped into a Python dictionary. Python-dotenv makes it easy by using the dotenv_values () method:
With load_dotenv (override=True) or dotenv_values (), the value of a variable is the first of the values defined in the following list: Value of that variable in the .env file. Value of that variable in the environment.
From the Github page:
Reads the key,value pair from .env and adds them to environment variable. It is great of managing app settings during development and in production using 12-factor principles.
Assuming you have created the .env file along-side your settings module.
. ├── .env └── settings.py
Add the following code to your settings.py
# settings.py import os from os.path import join, dirname from dotenv import load_dotenv dotenv_path = join(dirname(__file__), '.env') load_dotenv(dotenv_path) SECRET_KEY = os.environ.get("SECRET_KEY") DATABASE_PASSWORD = os.environ.get("DATABASE_PASSWORD")
.env is a simple text file. With each environment variables listed per line, in the format of KEY="Value", lines starting with # is ignored.
SOME_VAR=someval # I am a comment and that is OK FOO="BAR"
In addition to @Will's answer, the python-dotenv module comes with a find_dotenv() that will try to find the .env file.
# settings.py import os from dotenv import load_dotenv, find_dotenv load_dotenv(find_dotenv()) SECRET_KEY = os.environ.get("SECRET_KEY") DATABASE_PASSWORD = os.environ.get("DATABASE_PASSWORD")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With