nikkie-ftnextの日記

イベントレポートや読書メモを発信

uv 0.3.0リリース、Pythonプロジェクト管理ツールのすがた! uv、お前、Ryeを屠るのか...

はじめに

黄前久美子部長、お誕生日おめでとうございます!! nikkieです1

今週のPyCoder's Weekly (#643)を読んでいたところ、めちゃ驚く記事が飛び込んできました。

この記事を読んでぶち上がったテンションでの走り書きです。
uv導入のための検証兼素振りは別途やりたいなと思っています。

目次

uv、パッケージインストーラのすがた

uvは「高速なpip」として認識していました。
Rustで実装されているので速いという理解です。

pip installuv pip installの速度比較記事もあり

高速なpipというイメージはコミュニティでも持たれていたのではないかと思います。
Ryeがpipやpip-toolsに代えて、uvを(リリース直後にもかかわらず)即採用したこともそれを私に印象付けました。

私はRyeのソースを読む中でpip-toolsなどのツールの理解を深めており、

仮想環境作成や依存のインストールだけでなく、uv pip compileで全ての依存とバージョンの出力までできるので、uvの採用に興味を持ってきていました。

uv、パッケージマネージャのすがた

8/20にリリースされたuv 0.3.0。
https://github.com/astral-sh/uv/releases/tag/0.3.0

PyCoder's Weeklyで読んだdev.to記事から

$ uv init
$ uv add click
$ uv run python -c "..."

あれ? これryeコマンドでやってたことでは?

But the interesting thing is that now uv has gone well beyond its initial "faster pip" phase and it's fulfilling its promise of being "a comprehensive Python project and package manager that's fast, reliable, and easy to use".

記事の著者(uvリリース直後からのユーザ)によると、最初「高速なpip」として始まったuvはその段階を超え、「理解しやすいPythonのパッケージ&プロジェクトマネージャ」という約束を果たしているところ(意訳)とのことです。

0.3.0のリリースノートによると、project、tool、script、python向けのインターフェースを導入
これらは今のところプレビューで実験的ではありますが、インターフェースは変わらないとのこと。

Now, the interfaces are stable and ready for production-use.

Python開発に必要なすべてをまとめてきている!

以下をサポートしたuvは、私からすると無視できない存在になったと思わされました。
同様の箇条書きはdev.to記事にもあります。

これまではpyenvやasdf・mise、pipx(pipx installpipx run)、プロジェクトも管理できる各種パッケージマネージャ(やpip-tools)と数多のツールを知る必要がありました。
ですが、もう一度上の箇条書きを見てください!
uvがまとめたことで、かなりeasyになっていると感じました。

終わりに

dev.toの「Python Packaging is Great Now: uv is all you need」をきっかけに、uvが0.3.0からPythonプロジェクトの管理ツールとして非常に光った存在となっていることを知りました。
1つのツールでこれだけ色々まかなってくれている存在は、私は他に知りません。
少し前に私は「単一のツールでコミュニティを統一するのはもはや現実的でないと思っています」と書いたのですが、uvが統一する可能性はある気がしてきてしまっています!

また、uv runで実行するスクリプトはPEP 723をサポートしているなど、最新のPythonの潮流の普及を後押しする可能性にもワクワクしました。
Ryeの1パーツだと思っていたuvが、Ryeという殻を食い破ってすごいことになってきましたね。

※Ryeの最近は全然キャッチアップできていないので、Rye側も負けてないよという点があったらお知らせください

ここまで書いて、朝見かけたこちらの投稿もワクワク感を共有してるのかもなと思ったり


  1. 部長というネタバレ、ごめんなさい