How do you use python-decouple to load a .env file outside the expected paths?

If you look at the decouple implementation, config is just a pre-instantiated AutoConfig:

config = AutoConfig()

But AutoConfig takes as optional argument search_path so we can do the following:

from decouple import AutoConfig
config = AutoConfig(search_path='/opt/envs/my-project')

Then you can do as usual:

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.