概要
Pythonで開発をしているときに、API KEYを隠すために.envを使うことがあります。しかし久しぶりにやるとやり方を忘れてたりします💦
検証環境は、
uvで構築されております。
ライブラリの追加もuvに合わせて導入しております。
普段は、Node.jsの方が触るのが多くて。。。
あっちなら思い出すが、こっちだと???
Viteだと書き方変わってきますが!
uvで管理する場合は、uv.lockを使用するのでpipと仕組みが違う。
- 再現性の欠如: uv.lock が更新されないため、チーム開発で環境を完全再現できなくなる。
- プロジェクト管理の不整合: pyproject.toml に依存関係が記録されず、構成管理が形骸化する。
- Project APIとの衝突: uv add 等のモダンな管理機能と混ぜると、依存関係の競合を招く。
- 推奨ワークフローからの逸脱: 公式は uv add(追加)と uv sync(同期)による管理を推奨している。
- 使い分けの原則: uv pip は既存の requirements.txt を扱う「低レイヤの互換モード」と割り切るべき。
導入のやり方
通常なら、pip installします。
pip install python-dotenv
私は最近は、uvなるものを使っているのでコマンドが違います。uvでpythonのバージョン管理ができまして、プロジェクト作るとライブラリの追加のコマンドも違ったりしますので注意が必要です。
uv add python-dotenv
.envファイルをまずは作成しましょう。環境変数には何かテキストを追加。
MY_NAME=John
main.pyにモジュールを呼び出すソースコードを記述。これで.envから環境変数を読み込むことできます。
from dotenv import load_dotenv
import os
load_dotenv() # Loads .env by default
my_name = os.getenv('MY_NAME')
print(f"MY_NAME: {my_name}")
実行結果
uv run main.py
MY_NAME: John
最後に
Pythonで.envを読み込むには、python-dotenvが必要ですのでこちらを追加しましょう。しばらく触っていないとやり方を忘れてしまうので、必要最小限のソースコードで動作確認する手順を記事にしました。人の参考にしてもうまくいかず💦
公式のリファレンスを読むのが良いなと思いました。設定が正しければcopy & pasteしても動きますので。