Skip to content
Latchkey

uvとは?高速なPythonのパッケージ兼プロジェクトマネージャー

uvはRust製の高速なPythonのパッケージ兼プロジェクトマネージャーで、pip、virtualenv、pip-toolsを単一の格段に高速なツールで置き換えられます。

uvはRuffの開発元による新しいツールで、Pythonのパッケージングスタックの多くを高速にドロップインで置き換えることを目指しています。pipよりも劇的に速く依存関係をインストールおよび解決し、仮想環境を管理し、プロジェクトのロックと実行もでき、そのすべてを1つのバイナリから行えます。

uvとは

uvはRustで書かれたPythonのパッケージインストーラー兼リゾルバ兼プロジェクトマネージャーです。標準の形式 (requirements.txt、pyproject.toml) を話し、pip互換のインターフェースを公開するため、既存のワークフローはおおむねそのまま動きつつ、並列リゾルバと積極的なcacheのおかげで格段に高速に動作します。

仕組み

uvは高速なSAT型のリゾルバで依存関係を解決し、グローバルなcacheからインストールし、コピーを避けるためにファイルを環境へhard linkします。仮想環境の作成 (「uv venv」)、そこへのインストール (「uv pip install」)、そしてlockfileでのプロジェクト全体の管理 (「uv sync」) ができます。共有cacheにより、繰り返しのインストールはほぼ瞬時です。

使用例

uvはpipに非常に近く、加えてより高水準なプロジェクトコマンドも備えています。

Common uv commands
# create a venv and install fast
uv venv
uv pip install -r requirements.txt

# or manage a project end to end
uv sync
uv run pytest

CI/CDでの役割

依存関係のインストールはPythonのpipelineにおいてtest以外で最も遅い段階になりがちなため、uvはCIで真価を発揮します。その速度とcacheに優しい設計はインストール時間を大幅に短縮し、実行間で永続化したuvのcacheが節約を積み重ねます。Latchkeyのマネージドrunnerでは、温まったuvのcacheに加え、PyPIの一時的な不具合に対する自動リトライにより、これらのインストール段階が高速で頼りになるものに保たれます。

代替ツール

pipは標準ですがより遅く、pip-toolsはロックを追加し、PoetryとPDMは統合的なプロジェクト管理を提供します。uvは、おおむね互換性を保ちながら格段に高速であることで競合し、これらのツールのいくつかの役割を一度に引き受けられます。

重要なポイント

  • uvはpip、virtualenv、pip-toolsに代わる、Rust製の高速なツールです。
  • 共有cacheと並列リゾルバにより、インストールが大幅に高速化されます。
  • CIでは、uvと永続的なcacheの組み合わせが、しばしば遅いPythonのインストール段階を短縮します。

関連ガイド