そもそもできないんじゃないか、、、、とも思っていますが、誰かご存じかもしれないので念のため確認します。
やりたいこと
タイトルの通りです。
たとえば、OSにUSERという環境変数が設定されており、hogeだとします。
そして、.envファイルにもUSERという環境変数を設定し、そこにはuserという値を設定したとします。
このときに、userという値を読み取りたいです。
しかし、実際にはhogeという値しか読み取ることができませんでした。
ちなみにですが、OSに設定されていない環境変数であれば.envに設定した値を正しく読み取れることは確認できています。
あくまでも、OSと.envで重複する環境変数を設定している場合のみの問題になります。
試したこと
OSと.envどちらを優先させるかを指定するようなオプションがないか調べるため、公式ドキュメントでread_env()メソッドを調べてみましたが、それらしいオプションは見つかりませんでした。
代替策を渋る理由
まぁ、
- 環境変数名変えたら?
- OSの環境変数消したら?
という話なのは薄々感じています。
感じてはいるんですが、複数のアプリケーション、複数種類のDBが動くOSにおいて、複数のアプリケーションの.env内で同じ環境変数名を使えたらいいな...というのが希望です。
(既に構築されていたアプリケーションがOSの環境変数を使っている模様...しかも、それがどのアプリケーションの環境変数なのかわからない.....
追記(2021/07/24)
こちらの記事に、python-dotenvであれば、OSの環境変数を上書きできるとの情報が載っていました。
https://maku77.github.io/python/env/dotenv.html
以下のようにして実施できるようです。
from dotenv import load_dotenv load_dotenv(override=True)
これと同じことを、django-environで行いたいだけなので、おそらく何かしら方法はあるはず(ちょっと時間がないのでここまでの記載にとどめておきますが、後で調べる予定です)
回答2件
あなたの回答
tips
プレビュー
2021/08/20 01:13