I'm forced to keep my .env
file in a non-standard path outside the root of my project (in a separate directory altogether).
Let's say I have my Django project in /var/projects/my_project
, though I have my .env
file in /opt/envs/my-project/.env
where my SECRET_KEY
is stored. In my settings.py
file, I'd like to explicitly use the .env
file at that path so that I can still do this:
from decouple import config
secret_key = config('SECRET_KEY')
I figured it out.
Instead of importing decouple.config
and doing the usual config('FOOBAR')
, create a new decouple.Config
object using RepositoryEnv('/path/to/env-file')
.
from decouple import Config, RepositoryEnv
DOTENV_FILE = '/opt/envs/my-project/.env'
env_config = Config(RepositoryEnv(DOTENV_FILE))
# use the Config().get() method as you normally would since
# decouple.config uses that internally.
# i.e. config('SECRET_KEY') = env_config.get('SECRET_KEY')
SECRET_KEY = env_config.get('SECRET_KEY')
Hopefully this helps someone.