🚀

uvとdirenvで環境を楽に切り替える

に公開

普通に開発する分にはuvのみで事足りるのですが、環境を汚さないようにしようと思うとvenvで隔離する必要があります。
例えばPythonのバージョンアップを試す場合なんかです。

ただし、venvで環境を隔離するといちいちactivateコマンドを打つ必要があり面倒なので、
direnvと組み合わせて切り替えたPythonバージョンに合わせて環境も一発で切り替わるようにしてます。

バージョンの固定とvenv環境の作成

まずプロジェクトのpythonバージョンを固定し、バージョンごとのvenv環境を作成します。
venvのディレクトリ名は利用するバージョンを含めるようにします。

uv python pin 3.12.11
uv venv .py-3.12.11

.envrcへの追記

次にdirenvの設定ファイルである、プロジェクトディレクトリ直下の.envrcに以下のコマンドを追記します。

.envrc
source .py-`cat .python-version`/bin/activate

あとはdirenvの設定を適用し、必要なパッケージを同期するだけです。

direnv allow
uv pip sync requirements.txt

これでいちいちactivateしなくてもこのディレクトリに移動しただけで環境が自動的に切り替わるようになります。

作成済みの別環境への切り替え

pinすると.python-versionが切り替わるため、direnvの設定を再適用するだけで環境が切り替わります。

uv pin python 3.13.0
direnv allow

Discussion