Python の python-dotenv で設定ファイルから値を読み込む
python-dotenv を使うと ini ファイルのように Key/Value 形式のファイルから値を読み込むことが出来ます。 今回は python-dotenv の使い方をメモしておきます。
検証環境¶
| 対象 | バージョン |
|---|---|
| macOS | 14.5 |
| Python | 3.11.9 |
インストール¶
uv pip install python-dotenv
サンプル 1:.env ファイルから値を読み込む¶
設定ファイル¶
python-dotenv はデフォルトで .env というファイルを読み込もうとします。 その為、以下の内容で .env ファイルを作成します。
.env
# Development settings
DOMAIN=example.org
ADMIN_EMAIL=admin@${DOMAIN}
ROOT_URL=${DOMAIN}/app
スクリプト¶
dotenv_values() で値を読み込みます。 引数が無い場合、読み込み先はデフォルトで .env ファイルです。
| sample.py | |
|---|---|
1 2 3 4 5 6 | |
実行結果¶
$ python sample.py
{'DOMAIN': 'example.org', 'ADMIN_EMAIL': 'admin@example.org', 'ROOT_URL': 'example.org/app'}
サンプル 2:任意のファイルから値を読み込む¶
設定ファイル¶
python-dotenv は任意のファイルから値を読み込むことも出来ます。 ここでは config.ini ファイルを作成します。
config.ini
# Development settings
DOMAIN=example.org
ADMIN_EMAIL=admin@${DOMAIN}
ROOT_URL=${DOMAIN}/app
スクリプト¶
dotenv_values() に引数を指定することで、指定した任意のファイルから値を読み込むことが出来ます。
| sample.py | |
|---|---|
1 2 3 4 5 6 | |
実行結果¶
$ python sample.py
{'DOMAIN': 'example.org', 'ADMIN_EMAIL': 'admin@example.org', 'ROOT_URL': 'example.org/app'}
サンプル 3:文字列から値を読み込む¶
スクリプト¶
python-dotenv に限った話ではありませんが、StringIO を使って定義した文字列を python-dotenv の入力にすることで、文字列から値を読み込むことが出来ます。
| sample.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
実行結果¶
$ python sample.py
example.org
admin@example.org
example.org/app