uv - Rustで実装された超高速Pythonパッケージングツール
(astral.sh)- uvはRustで書かれた超高速のPythonパッケージインストーラー兼リゾルバーで、
pipおよびpip-toolsのワークフローを置き換えるために設計されている - uvは「Cargo for Python」を目指すマイルストーンであり、高速で信頼性が高く使いやすい、包括的なPythonプロジェクトおよびパッケージマネージャー
- Ryeは、Armin Ronacherが実験的に開発したPythonパッケージングツールであり、その管理を引き継いでuvを統合された後継プロジェクトへと拡張する計画
パフォーマンスへの徹底したこだわり
- uvはキャッシュなしでも
pipおよびpip-toolsより8〜10倍高速で、キャッシュがある場合は80〜115倍高速。 - グローバルモジュールキャッシュを使用して依存関係を再ダウンロードまたは再ビルドせず、対応ファイルシステムではCopy-on-Writeとハードリンクを活用してディスク使用量を最小限に抑える。
導入しやすさの最適化
- uvの初期リリースは
pipおよびpip-toolsAPIをサポートしており、既存プロジェクトでも設定変更なしで利用できる。 - uvは単一の静的バイナリとして提供され、
pip、pip-tools、virtualenvを置き換えられる。 - Python自体とは別にインストールできるため、Pythonのバージョンごとに
pipのインストールを管理する必要がない。
「Cargo for Python」: uvとRye
- uvは、高速で信頼性が高く使いやすい、統合型のPythonパッケージ/プロジェクトマネージャーに向けた中間マイルストーンである。
- uvは
pip、pip-tools、virtualenvだけでなく、pipx、tox、poetry、pyenv、ruffなども含む単一バイナリを目指している。
互換API
pip installの代わりにuv pip installを使うことで、コマンドライン、要件ファイル、またはpyproject.tomlからPython依存関係をインストールできる。pip-compileの代わりにuv pip compileを使って、ロックされたrequirements.txtを生成できる。pip-syncの代わりにuv pip syncを使って、ロックされたrequirements.txtと仮想環境を同期できる。
ロードマップ
- このリリース以降は、ユーザーサポートを優先しつつ、互換性・性能・安定性の向上に注力する計画。
- その後は、uvを完全なPythonプロジェクト/パッケージマネージャーへ拡張することを目標としている。
謝辞
- uvの開発に直接的または間接的に貢献したすべての人々に感謝を表している。
- 特に、PubGrubの基盤となるバージョン解決機構としてuvで利用されているJacob FinkelmanとMatthieu Pizenbergに感謝する。
GN⁺の見解
- uvはPython開発者に既存の
pipツールよりはるかに高速な性能を提供し、プロジェクト設定時間を大幅に短縮できる革新的なツールである。 - Rustで書かれており、Pythonエコシステムの中で性能と安定性を重視する新たなトレンドを反映していて、開発者体験を大きく向上させることが期待される。
- uvの開発はPythonパッケージングおよびプロジェクト管理ツールの統合を志向しており、これにより開発者はより効率的で一貫した方法で作業できるようになるだろう。
3件のコメント
本当にものすごく速いですね;;
拡張されてcondaを置き換えられるようになるといいですね
Hacker Newsの意見
VC支援の pip-and-more への疑問
uv がプラットフォーム非依存の lockfile を生成しないことへの質問
uv の代替依存関係解決戦略サポートへの肯定的な評価
--resolution=lowestオプションにより、最も低い互換バージョンでテストできる機能を提供している。--python-versionパラメータを通じて、現在インストールされている Python バージョンとは異なるバージョン向けの解決結果を生成できるのは素晴らしい。Python パッケージシステムの複雑さへの疑問
uv が pubgrub-rs を使っている点の興味深さ
Astral チームの進路予測への言及
pip の速度に関する個人的な経験
新しい Python パッケージマネージャーに対する懐疑的な見方
uv がプラットフォーム固有の requirements.txt ファイルを生成する決定への疑問
Astral チームの取り組みへの祝意と好意的な反応
pip パッケージのコンパイル問題に関する質問