uv vs Poetry: Pythonプロジェクト管理の比較
どちらもプロジェクトを管理し、依存関係を解決し、lockfileを書き出します。uvはより高速で新しく、Poetryは成熟した広くドキュメント化された標準です。
uvとPoetryはどちらも単なるインストールを超えます: プロジェクトをモデル化し、依存関係グラフ全体をロックし、仮想環境を管理します。uv(Rust)は速度に最適化し、Poetryは長年の採用、plugin、エコシステムの馴染みを持ちます。
| uv | Poetry | |
|---|---|---|
| 言語 | Rust | Python |
| Lockfile | uv.lock | poetry.lock |
| 解決/インストール速度 | 非常に高速 | 遅い、特に大きなグラフで |
| パッケージング/公開 | uv build / uv publish | poetry build / poetry publish |
| 成熟度 & ドキュメント | 新しい、急速に進化中 | 成熟、広範なエコシステム |
uvが有利な場面
大きな依存関係グラフでは、uvははるかに高速に解決とインストールを行い、これはすべてのCI実行にわたって積み重なります。単一のツールでインストール、ロック、実行、buildをカバーします。pyprojectベースのワークフローはPoetryユーザーに馴染みがあり、移行を容易にします。
Poetryが有利な場面
Poetryには長年の本番利用、豊富なドキュメント、pluginエコシステム、そして多くのチームがすでに標準化している予測可能な動作があります。チーム、ツール、またはCIテンプレートがPoetryを前提としているなら、乗り換えは手間に見合わないかもしれません。Poetryのリゾルバの動作はよく理解され、実戦で鍛えられています。
CIでは
lockfile(uv.lockまたはpoetry.lock)をコミットし、そのハッシュでキャッシュします。uv syncとpoetry install --no-rootはどちらも決定論的なインストールを提供します。パイプラインで実感する主な実際的な違いは、実時間(wall-clock)のインストール時間です。
結論
速度と単一の高速なツールチェーンのためにuvを選びます - 特に大規模プロジェクトや忙しいパイプラインで。その成熟度、エコシステム、既存の慣習が速度の利点を上回る場合はPoetryを維持します。どちらも再現可能でlockfile駆動のbuildを生成します。