Open6

python-dotenv の使い方

ikeponikepon
  • uv を使ってるので uv add python-dotenv でインストール
  • 開発環境において .env ファイルがあるとき、それを環境変数として読み込んで使える
from dotenv import load_dotenv

load_dotenv()  # take environment variables

# Code of your application, which uses environment variables (e.g. from `os.environ` or
# `os.getenv`) as if they came from the actual environment.
ikeponikepon
  • デフォルトで load_dotenv は既存の環境変数を上書きしない
  • アプリ立ち上げるときと同じ階層にある .env を読み込む
  • だいたいのアプリは root ディレクトリで立ち上げると思うので、ここに .env をおけば良さそう
ikeponikepon
  • Bash と同じように環境変数を使った構文がある
  • ${DOMAIN} みたいに ${} で展開される
  • $DOMAIN は展開されないので注意
  • .env.gitignore に追加する
# Development settings
DOMAIN=example.org
ADMIN_EMAIL=admin@${DOMAIN}
ROOT_URL=${DOMAIN}/app
ikeponikepon
  • dotenv_values は環境変数ではなく、 .env の内容を読み込んで、それを dict で返す
from dotenv import dotenv_values

config = dotenv_values(".env")  # config = {"USER": "foo", "EMAIL": "foo@example.org"}
  • ファイルを読み込んでいるだけなので、複数組み合わせたりできる
import os
from dotenv import dotenv_values

config = {
    **dotenv_values(".env.shared"),  # load shared development variables
    **dotenv_values(".env.secret"),  # load sensitive variables
    **os.environ,  # override loaded values with environment variables
}
ikeponikepon
  • IPython で dotenv を使える
%load_ext dotenv
%dotenv