メインコンテンツへスキップ

uvでサードパーティ製ライブラリをアップデートする

·1592 文字·4 分
目次
uv - この記事は連載の一部です
パート 3: この記事

はじめに
#

Pythonのパッケージ管理ツールuvの使用方法を解説するシリーズの第3段です。 uvでサードパーティ製ライブラリのバージョンをアップデートする方法を解説します。

Pythonのソフトウェアを長期間開発していると、サードパーティ製ライブラリのアップデートが必要となります。 この記事の前提として、uvで既に仮想環境を作成しているものとします。

検証環境は以下の通りです。

  • Windows 10 Home 22H2
  • uv 0.8.22

この記事では、uvの以下のコマンドについて解説します。

  • uv sync -U または uv sync --upgrade: ライブラリをアップデートする。
  • uv sync -U --dry-run: ライブラリをアップデートせずに、アップデート可能なライブラリを表示する。
  • uv tree --outdated: ライブラリの最新バージョンを表示する。

事前の準備
#

最初に、ライブラリのバージョンを記述したpyproject.tomlにおいて、バージョンを完全に固定していないことを確認します。 例えば、

[project]
dependencies = [
    "ruff==0.12.11",
]

となっている場合、

[project]
dependencies = [
    "ruff>=0.12.11",
]

のように変更します。

更新可能なライブラリの確認
#

まずはライブラリを更新せずに、更新可能なものがあるか確認します。 pyproject.tomlがあるディレクトリでコマンドuv sync -U --dry-runを実行します(-U--upgradeに変更可能)。 すると、以下のように更新されるライブラリが表示されます。

> uv sync -U --dry-run
Would use project environment at: .venv
Resolved 2 packages in 209ms
Would update lockfile at: uv.lock
Would download 1 package
Would uninstall 1 package
Would install 1 package
 - ruff==0.12.11
 + ruff==0.13.2

ここではruffが0.12.11から0.13.2に更新可能と表示されています。

ライブラリの更新
#

ライブラリの更新内容に問題がなければ、--dry-runオプションを外し、uv sync -Uコマンドを実行して更新します。

> uv sync -U
Resolved 2 packages in 68ms
Prepared 1 package in 782ms
Uninstalled 1 package in 28ms
Installed 1 package in 585ms
 - ruff==0.12.11
 + ruff==0.13.2

このコマンドを実行すると、仮想環境のライブラリが更新されます。 また、uv.lockファイルも更新されます(uv.lockをGitで管理している場合はコミットします)。

ただし、pyproject.tomlのバージョン番号は更新されません。 uv 0.8.22の時点ではpyproject.tomlのバージョン番号を更新する機能はないようですので、更新する場合は手動で書き換える必要があります。 なお、uv.lockのバージョン番号は更新されているため、pyproject.tomlを更新しなくても、uv.lockから他のPCでもライブラリの更新を再現することは可能です。

ライブラリの最新バージョンを表示
#

ライブラリの最新バージョンを確認するには、uv tree --outdatedコマンドを使用します。 以下のようにインストールされたライブラリが一覧表示され、古いものには最新バージョンが(latest: v8.4.2)のように表示されます。

> uv tree --outdated
Resolved 37 packages in 4ms
rufftest v0.1.0
├── pylint v3.3.8
│   ├── astroid v3.3.11
│   ├── colorama v0.4.6
│   ├── dill v0.4.0
│   ├── isort v6.0.1
│   ├── mccabe v0.7.0
│   ├── platformdirs v4.4.0
│   └── tomlkit v0.13.3
├── pytest v8.4.1 (latest: v8.4.2)
│   ├── colorama v0.4.6
│   ├── iniconfig v2.1.0
│   ├── packaging v25.0
│   ├── pluggy v1.6.0
│   └── pygments v2.19.2
├── ruff v0.12.10 (latest: v0.13.2)
└── matplotlib v3.10.6 (extra: plot)
    ├── contourpy v1.3.3
    │   └── numpy v2.3.2 (latest: v2.3.3)
    ├── cycler v0.12.1
    ├── fonttools v4.59.2 (latest: v4.60.0)
    ├── kiwisolver v1.4.9
    ├── numpy v2.3.2
    ├── packaging v25.0
    ├── pillow v11.3.0
    ├── pyparsing v3.2.3 (latest: v3.2.5)
    └── python-dateutil v2.9.0.post0
        └── six v1.17.0

uv tree --outdatedコマンドでは「更新可能か否か」ではなく、単に最新のバージョン番号が表示されることに注意します。 例えば、ruffのインストール可能なバージョンを>=0.12.0, <0.13とした場合、v0.13.2は現時点での最新バージョンですが、インストール可能なバージョンではありません。

まとめ
#

  • uv sync -U または uv sync --upgrade: ライブラリをアップデートする。
  • uv sync -U --dry-run: ライブラリをアップデートせずに、アップデート可能なライブラリを表示する。
  • uv tree --outdated: ライブラリの最新バージョンを表示する。

参考
#

詳細な使用方法はuvのuv sync --helpuv tree --helpコマンドで確認できます。

Helve
著者
Helve
関西在住、電機メーカ勤務のエンジニア。X(旧Twitter)で新着記事を配信中です
uv - この記事は連載の一部です
パート 3: この記事

関連記事

uvでサードパーティ製ライブラリを管理する
·2704 文字·6 分
uvでサードパーティ製ライブラリの追加・削除、およびバージョンを管理する方法を解説します。
uvでPythonプロジェクトを始める
·2896 文字·6 分
Pythonのパッケージ管理ツールuvでプロジェクトを新しく開始する方法を解説します。
PythonでタスクランナーTaskfileを使う
·2655 文字·6 分
タスクランナーTaskfileをPython環境にインストールし、Ruff, mypy, pytestを実行する方法をまとめました。
Pythonの列挙型Enumを検証
·1462 文字·3 分
Pythonの列挙型Enumについて、同値判定の方法、型ヒントやdocstringの書き方などを調査した結果を備忘録として残します。
Sphinxでサイトマップを作る
·812 文字·2 分
Sphinxでサイト構造を示すサイトマップ (sitemap.xml) を作成する方法をまとめました。
Sphinxで生成するHTMLにSNSシェア用のOGPタグを設定する
·1359 文字·3 分
Sphinxで生成する記事のHTMLに、SNSで詳細情報を伝えるためのOGP (Open Graph Protocol) を導入する方法をまとめました。