Skip to content
Latchkey

uv vs pip: CI向けの高速なPythonインストール

uv(Astral製)はRust製のインストーラーで、pipのほぼドロップイン置き換えですが、特にコールドなCIキャッシュでは通常はるかに高速にインストールします。

pipは、あらゆるチュートリアルが前提とする組み込みの汎用Pythonインストーラーです。uvは、pip形式のインストールに加えてプロジェクト/lockのワークフローを再実装した新しいRustツールで、汎用性を速度と引き換えにしています。

uvpip
言語RustPython
インストール速度通常はるかに高速、並列 + グローバルキャッシュベースライン
pip互換性uv pip installはほぼドロップインリファレンスそのもの
Lockfileuv.lock(プロジェクトモード)またはpip-compile形式ネイティブになし(pip-toolsを使用)
入手性追加のインストール手順(バイナリ/action)Pythonに同梱

uvが有利な場面

uvは並列に解決とインストールを行い、展開済みのwheelのグローバルキャッシュを保持するため、繰り返しのインストール(CIでよくあるケース)が劇的に高速です。uv pip install -r requirements.txtはpipと同じファイルを受け付けるので、導入は通常摩擦が少ないです。uvはリゾルバ(uv pip compile)としても、uv.lockによるプロジェクトマネージャーとしても機能します。

pipが依然有利な場面

pipはすべてのPythonインストールに同梱されるため、追加でプロビジョニングするものがなく、風変わりなプラットフォームでツールが欠ける心配もありません。シンプルなjob、使い捨てのスクリプト、またはバイナリを追加できない環境では、素のpipが最も抵抗の少ない道です。pipは正規のリファレンスでもあります: パッケージがpipしかドキュメント化していない場合、pipは曖昧さを排除します。

CIでは

いずれにせよ、固定したrequirementsまたはlockfileのハッシュでキャッシュします。uvは大きな依存関係ツリーでコールドインストール時間を顕著に短縮します。pipにウォームなwheelキャッシュを加えると差は縮まります。どのツールでもバージョンを固定して、buildが再現可能になるようにしてください。

結論

インストール時間が重要でバイナリを追加できる場合はuvを選びます(ほとんどのCIをカバーします)。最大限の移植性、可能な限りシンプルなセットアップ、またはツールがpipしかドキュメント化していない場合はpipを選びます。両者は共存します: 多くのチームはCIでuv pipを、ローカルで素のpipを実行します。

関連ガイド