😎
Pydanticを使った環境変数の扱い方について
はじめに
便利ですよね、pydantic。私はFastAPIとの組み合わせで使い始めてから何となーくで使っています。
業務Pythonプロジェクトで環境変数を扱う際はos.environ['XXXX_XXXX']
を使っていましたが、Pydanticで簡単に扱えるとのことなので、自分の使い方の範囲でまとめていきたいと思います。
書くこと
- Pydanticを使った環境変数の扱い方について
書かないこと
- Pydantic自体の詳細な説明
💻my環境
言語・ライブラリなど | バージョン |
---|---|
PC | MacBook Pro M1 Pro |
python | 3.10.13 |
pydantic | 2.7.2 |
pydantic-settings | 2.2.1 |
VSCode | 1.89.1 |
direnv | 2.34.0 |
準備
インストール
必要なモジュールをインストールしておきます
(適宜扱っている環境などで読み替えてください)
zsh
pip install pydantic pydantic-settings
また、私の環境ではdirenvも使っているので、それも準備しておきます
brew install direnv
~/.zshrcに下記を追記
eval "$(direnv hook bash)"
zshrc再読み込み
$ source ~/.zshrc
今回のテスト用の環境変数はこちら
.envrc
export ENV_TEST="test_text"
試してみる その1
環境変数が設定されていることを確認して
zsh
echo $ENV_TEST
test_text
以下のコードを実行
settings.py
from typing import Optional
from pydantic import Field
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
env_test: Optional[str] = Field(default=None) # 環境変数名を変数名にする
settings = Settings()
print(settings)
出力
env_test='test_text'
試してみる その2
その1の例では、環境変数の名前をそのまま使っていたが、それを分けるためには、alias
オプションを指定
settigs.py
from typing import Optional
from pydantic import Field
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
hoge: Optional[str] = Field(default=None, alias="ENV_TEST")
settings = Settings()
print(settings)
出力
hoge='test_text'
おわりに
今回は簡単な使い方だけを把握しましたが、公式ドキュメントを見るともっとちゃんと使える方法が載っているので、その辺は追々見ていこうと思います。
Discussion