いい加減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管理のものなら設定完了です。

--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たちもにっこりです。


コメント