PR

pyenvからの脱却:普段使うPythonもuvで管理する

プログラミング

いい加減Python関係はuvに統一したいなーと思い、普段使うpythonもuvで用意することにしました。

以下はuv導入済みのWindows・PowerShell環境での手順です。未導入なら公式のインストール手順を参照してください。

uvでPythonをインストールする

uvを更新し、Pythonをインストールします(以下のはPython 3.14の例)。

# 公式の単体インストーラーで入れたuvを更新
uv self update

uv python install 3.14 --default
uv python update-shell

Scoopなどで導入したuvは、そのツールで更新してください。Scoopならscoop update uvです。

--defaultでpythonとpython3も用意されます(実験的な機能)。uv python update-shellは、コマンド配置先をPATHへ追加します。

呼び出されるPythonを確認する

仮想環境を抜けてターミナルを開き直し、次を実行します。

Get-Command python -All
python --version
python -c "import sys; print(sys.executable)"

バージョンが3.14で、実行ファイルがuv管理のものなら設定完了です。

uvでインストールされたグローバル環境のPythonの例

--defaultを付けても、別のPythonより優先されるとは限りません。 意図したPythonが動かなければ、Get-Command python -Allの結果を見て、pyenvのPATH登録・初期化設定やWindowsのアプリ実行エイリアスを確認してください。衝突時は、--forceで上書きする前に対象を確かめます。

pyenvの削除はuv側の動作確認後にします。既存の仮想環境がpyenvのPythonを参照している場合は、依存関係を控えてuv側で作り直し、動作を確かめてから旧環境を整理してください。

外部ライブラリは用途ごとに追加する

外部ライブラリは別途追加が必要です。uv管理のプロジェクト内なら、次のように使います。

uv add pyyaml
uv run python -c "import yaml; print(yaml.__version__)"

一時的に使うだけなら、実行時に依存関係を指定できます。

uv run --no-project --with pyyaml python -c "import yaml; print(yaml.__version__)"

プロジェクト管理の基本は、uv・Ruff・tyの紹介記事でも扱っています。

グローバル環境へ直接入れる場合(非推奨)

既存の処理に合わせて共通環境へ直接追加する場合は、仮想環境を抜け、インストール先がuv管理のPythonであることを確認してから実行します。

$pythonPath = python -c "import sys; print(sys.executable)"
uv pip install --python "$pythonPath" --break-system-packages pyyaml
python -c "import yaml; print(yaml.__file__)"
外部ライブラリインストール場所の例

--pythonでインストール先を指定し、--break-system-packagesで外部管理環境の変更制限を解除しています。OSや別の管理ツールのPythonへ、エラー回避のためだけにこの指定を付けないでください。

依存関係の衝突を避けるため、普段はuv addやuv run --withで環境を分けるのがよさそうです。

Python本体もuvにまとまり、やたらとPythonを使いたがるLLMたちもにっこりです。

コメント

タイトルとURLをコピーしました