uv を使い始めると、「何をアップデートすればよいのか」が少し分かりにくくなります。
特に、Python にセキュリティ修正が入って新しいパッチ版へ上げたいときは、次の2つを分けて考える必要があります。
-
uv自体のアップデート -
uvが管理している Python 本体のアップデート
この記事では、この2つの違いと、実際にどう更新するかをまとめます。
先に結論
まず整理すると、更新対象は別物です。
-
uv self update:uvというツール自体を更新する -
uv python install 3.12 --upgrade:uv管理の Python 3.12 系を新しいパッチ版へ上げる
ここを混同しないのが大事です。
どんなときに更新が必要になるのか
自分が実際に更新したのは、Python 自体にセキュリティ上の修正が入り、新しいパッチ版へ上げる必要が出たときでした。
このとき最初に混乱しやすいのが、「uv を更新すればいいのか、それとも Python を更新すればいいのか」という点です。
結論から言うと、Python の脆弱性対応で必要なのは、基本的には Python 本体の更新です。
ただし、uv には「利用できる Python 配布物の情報」が含まれているため、新しい Python 版を入れたいときは、先に uv 自体の更新が必要になることがあります。
まずは更新対象を整理する
uv 自体とは
uv コマンドそのものです。
uv init や uv add、uv sync を動かしている本体です。
Python 本体とは
実際にコードを実行する python です。
uv を使っていても、動いているのは最終的に Python 本体です。
つまり、Python のセキュリティ修正に対応したいなら、更新したいのは Python 側です。
uv 自体をアップデートする
このシリーズでは、公式の standalone installer で uv を入れる前提で書いています。
この方法で入れているなら、次で uv 自体を更新できます。
uv self update
更新後は次で確認できます。
uv --version
なぜ先に uv を更新することがあるのか
公式CLIリファレンスでは、uv python install で使える Python の配布物情報は uv のリリースに同梱されており、新しい Python バージョンを入れるには uv の更新が必要になることがある、と説明されています。
つまり、Python の新しい修正版が出た直後は、先に uv self update が必要なことがあります。
注意点
公式ドキュメントでは、uv self update が使えるのは standalone installer で入れた場合です。
別の方法で入れている場合は、そのインストール元の更新方法を使います。
Python 本体をアップデートする
uv が管理している Python を、同じ minor 系のまま新しい patch 版へ上げたいなら、次のコマンドが分かりやすいです。
uv python install 3.12 --upgrade
これは、すでに 3.12 系が入っていれば新しい patch 版へ上げ、まだ入っていなければインストールします。
実際の流れ
たとえば「Python 3.12 系でセキュリティ修正が出たので、最新 patch に上げたい」という場合は、次の流れで進めると分かりやすいです。
uv self updateuv python listuv python install 3.12 --upgrade- プロジェクトで
uv sync uv run python --version
それぞれ何をしているのか
uv self update
新しい Python 配布物情報を取り込むために、先に uv 自体を更新します。
uv python list
今入っている Python や、利用可能な Python を確認します。
uv python list
uv python install 3.12 --upgrade
3.12 系の最新 patch 版へ上げます。
uv sync
プロジェクト環境をそろえ直します。
プロジェクトのフォルダで実行します。
uv sync
uv run python --version
最後に、実際に使われる Python バージョンを確認します。
uv run python --version
uv python upgrade というコマンドもある
公式ガイドでは、Python patch 版の更新用に uv python upgrade も案内されています。
uv python upgrade 3.12
ただし、2026年4月12日時点の公式ガイドでは、この機能は preview とされています。
そのため、初心者向けには、まず uv python install 3.12 --upgrade で考える方が分かりやすいと思います。
Python公式インストーラーで入れたPythonはどうするのか
ここは大事です。
もし Python を uv 管理ではなく、Python公式インストーラーで入れているなら、その Python 自体は uv では更新できません。
その場合は、Python公式インストーラー側の手順で更新する必要があります。
つまり、uv で更新できるのは「uv が管理している Python」です。
こんなときはどう考えるか
uv --version は新しいのに、Python が古い
更新できているのは uv だけです。
Python 本体は別に更新が必要です。
Python の新しい patch が出たのに入れられない
先に uv self update が必要なことがあります。
既存プロジェクトでも更新した方がよいのか
セキュリティ修正が目的なら、使っている Python minor 系の新しい patch 版へ上げる価値があります。
そのあとで uv sync や動作確認をして、問題がないかを見るのが安全です。
まとめ
今回のポイントは次のとおりです。
-
uvの更新と Python 本体の更新は別物 - standalone installer で入れた
uvはuv self updateで更新できる -
uv管理の Python はuv python install 3.12 --upgradeで patch 更新しやすい - Python の新しい版を入れる前に
uv更新が必要になることがある - Python公式インストーラーで入れた Python は、
uvでは更新できない
Python の脆弱性対応のように急いで上げたい場面では、何を更新すべきかを分けて考えるだけでもかなり混乱が減ります。
参考
- uv Installation: https://docs.astral.sh/uv/getting-started/installation/
- uv Installing Python: https://docs.astral.sh/uv/guides/install-python/
- uv CLI reference: https://docs.astral.sh/uv/reference/cli/
補足
この記事は生成AIを活用して作成しました。