【python3】dotenvを使って環境変数を管理する
結論
$ pip install python-dotenv
「.env」ファイル:
VALUE_NAME = value
python側:
import os
from os.path import join, dirname
from dotenv import load_dotenv
dotenv_path = join(dirname(__file__), '.env')
load_dotenv(verbose=True, dotenv_path=dotenv_path)
# もっと簡単に
from dotenv import load_dotenv
load_dotenv()
# この書き方をする場合、環境変数は「.env」という名前のファイルで、pythonコードと同階層、もしくは親階層に存在していること
取り出すとき:
# 普通の環境変数と同じ
import os
os.environ.get("VALUE_NAME")
# もしくは
os.getenv("VALUE_NAME")
何をしているか
$ pip install python-dotenv
python-dotenvをインストール(あたまにpython-付くのを忘れない)
VALUE_NAME = value
.envファイルにキーと値のペアを書いておく。値の方、""はあってもなくてもいい。
import os
from os.path import join, dirname
from dotenv import load_dotenv
dotenv_path = join(dirname(__file__), '.env')
load_dotenv(verbose=True, dotenv_path=dotenv_path)
osモジュールとdotenvをインポートしておく。
dirname(__file__)で現在のファイルのパスを取得して、os.pathのjoinを使ってファイルパスを結合して、.envファイルのパスを作る。ここで
dotenv_path = f"{dirname(__file__)}/.env"
とかでやってると、Windowsで開発してLinuxサーバーで動かしたりするときに死ぬ。
もちろんサンプルは.envファイルとpythonコードが同じ階層にある前提。
階層が違う時はなんか良い感じにごにょごにょしてくれ。
パスを渡さずにload_dotenv()すると親方向「.env」ファイルをに探しに行ってくれるらしい。
明示的に「探しに行け」って指定したい場合、
load_dotenv(find_dotenv())
verbose=True は、.envファイルが見つからないときにエラーを出す設定。デフォルトはFalseみたい。
環境変数の呼び出しは、普通の環境変数と同じ。
import os
os.environ.get("VALUE_NAME")
# もしくは
os.getenv("VALUE_NAME") # dotenvの公式ドキュメントはこっちで書いてる
os.environ.getとos.getenvは等価。
参考:
この記事が気に入ったらサポートをしてみませんか?