PDM vs uv: 標準準拠のPythonプロジェクトツール
PDMは標準志向のPythonプロジェクトマネージャー、uvはより高速なRustの新参者です。どちらもpyproject.tomlを使い、lockfileを生成します。
PDMはPythonパッケージングのPEPへの準拠を重視し、PEP 582(__pypackages__)を早期にサポートしました。uvは生の速度と統一されたツールチェーンに焦点を当てます。選択はしばしば、標準の純粋さ対パイプラインの速度に帰着します。
| PDM | uv | |
|---|---|---|
| 言語 | Python | Rust |
| 設定 | pyproject.toml | pyproject.toml |
| Lockfile | pdm.lock | uv.lock |
| PEP 582 (__pypackages__) | サポート | 焦点ではない |
| インストール/解決速度 | 良好 | 非常に高速 |
PDMが有利な場面
PDMはPythonのパッケージング標準を綿密に追い、一部のチームがvirtualenvより好むPEP 582形式のローカルパッケージディレクトリをサポートします。標準との整合性と、拡張できるPythonネイティブのツールを重視するなら、PDMは強力で成熟した選択肢です。
uvが有利な場面
uvは一般に解決とインストールが高速で、Pythonバージョン管理と実行を1つのバイナリにまとめます。インストール時間が繰り返しのコストになるCIでは、uvは通常より多くの実時間を削減します。
CIでは
どちらもlockfileをコミットし、そのハッシュでキャッシュすれば決定論的です。まず標準/機能の適合(例えばPEP 582)を決め、次に速度を決めます: ほとんどのパイプラインではuvが高速で、標準重視のチームにはPDMが魅力的です。
結論
標準への準拠やPEP 582のワークフローが重要ならPDMを選びます。インストール速度と単一の高速なツールチェーンが勝るならuvを選びます。どちらも再現可能でpyprojectベースなので、いずれも正当化できます。
関連ガイド
uv vs Poetry: Python Project Management Compareduv vs Poetry for Python projects and CI: speed, lockfiles, packaging, and maturity. When the faster uv fits a…
uv vs pip: Faster Python Installs for CIuv vs pip for Python CI: install speed, lockfiles, drop-in compatibility, and caching. When the Rust-based uv…
Rye vs uv: Python Toolchains from AstralRye vs uv for Python: scope, Python version management, and direction. Why Astral now points new projects at…