Using .env files within Python
I have been trying a lot of Node.js tutorials, putting my hands to learning a new skill and all that, especially during COVID-19. Using enviroment variables has always been easy in node especially with packages such as dotenv which allows getting your variables from your
.env file with ease.
// .env DB_HOST=localhost
// nodeFile.js require('dotenv').config() const db = host: process.env.DB_HOST,
But when using enviroment variables within Python, I have always found that a little tricky, mainly because if you're in an virtual enviroment and you set variables in that enviroment. Once you stop it, they're forgotten.
This is of course unless you keep them in your
.zsh file. But then if you upload your dotfiles to Github they're stored in the repo.
python-dotenv a sweet package from Saurabh Kumar that allows you to use
.env within your Python projects. Whilst I am working through node tutorials, I still like to brush up on my Python. Having a package like this has made my life a tone easier when it comes to managing keys.
Let me walk you through how to get set up
Install the latest version
pip install -U python-dotenv
Assuming you have created the
.env file along-side your settings module.
. ├── .env └── settings.py
Add the following code to your
# settings.py from dotenv import load_dotenv load_dotenv() # OR, the same with increased verbosity load_dotenv(verbose=True) # OR, explicitly providing path to '.env' from pathlib import Path # python3 only env_path = Path('.') / '.env' load_dotenv(dotenv_path=env_path)
At this point, parsed key/value from the
.env file is now present as system environment variable and they can be conveniently accessed via
# app.py import os SECRET_KEY = os.getenv("EMAIL") DATABASE_PASSWORD = os.getenv("DATABASE_PASSWORD")
You can find more information about
python-dotenv via the repo. I think this is a great package, and i'll be using it in all my Python development.