Djangoで.envが読み込めない問題と解決法

こんにちは、フリーランスエンジニアの太田雅昭です。

Djangoで.envが読み込めない

今回、以下の問題に遭遇しました。

通常のDjangoではsettings.pyが存在するのですが、その派生であるWagtailでは、settingsディレクトリにあるbase.pyを編集する形となっています。今回の問題がそれによるものかよく分かっていないのですが、.envが読み込めませんでした。

from decouple import Config

BASE_DIR = os.path.dirname(PROJECT_DIR)

env_path = os.path.join(BASE_DIR, '.env')
config = Config(env_path)
SECRET_KEY =config.get("DJANGO_SECRET_KEY")

解決策

このissueが、Githubに立てられています。

以下の投稿がありました。

.env is searched starting on the main module directory going upwards on the directory tree.

https://github.com/HBNetwork/python-decouple/issues/99

ほほうなるほど、よくわからないですがともかくこの投稿に合った解決策が以下です。

from decouple import Config, RepositoryEnv

config = Config(RepositoryEnv("path/to/env_file"))

なんでもファイルパスをspecifyするそうです。何はともあれ、これで動くようになりました。