Skip to content
Latchkey

pip vs uv: CI で Python の install をより高速に

uv(Astral 製)は pip のワークフローを Rust で再実装しており、CI では install 速度の差を無視するのが難しいほどです。

pip は Python に同梱される標準の Python インストーラです。uv は Rust ベースのツールで、高速で pip 互換のインストーラに加え、プロジェクト、lockfile、Python バージョンの管理を提供します。

pipuv
実装PythonRust
インストール速度ベースラインはるかに高速 (しばしば 10x 以上)
Resolverバックトラッキング高速な resolver
Lockfileネイティブになし (pip-tools)uv.lock (プロジェクトモード)
Python バージョン管理なしあり (Python をインストール可能)

CI において

uv は pip よりはるかに高速に依存関係を install し解決するため、多くの Python パイプラインの最も遅い部分を短縮し、Python インタプリタ自体を install してセットアップステップを取り除くこともできます。uv はドロップイン可能な pip インターフェース(uv pip install)も提供するため、プロジェクトのレイアウトを変えずに速度のために導入できます。pip はあらゆるツールがドキュメント化する普遍的なデフォルトであり続けます。

どちらでも cache する

wheel/ダウンロードの cache を requirements の lock でキーづけして cache してください。両者とも標準的な CI runner 上で動作し、install が job 時間を支配するなら、uv とより高速なマネージド runner の組み合わせがより大きなてこになります。

結論

最速の install とオプションの Python 管理が欲しいなら uv(その pip インターフェースが導入を容易にします)。普遍的で依存関係ゼロのデフォルトが欲しいなら pip。複雑な constraints がある場合は、切り替える前に解決をテストしてください。

関連ガイド