はじめに
黄前久美子部長、お誕生日おめでとうございます!! nikkieです1
今週のPyCoder's Weekly (#643)を読んでいたところ、めちゃ驚く記事が飛び込んできました。
この記事を読んでぶち上がったテンションでの走り書きです。
uv導入のための検証兼素振りは別途やりたいなと思っています。
目次
uv、パッケージインストーラのすがた
uvは「高速なpip」として認識していました。
Rustで実装されているので速いという理解です。
pip install
とuv 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記事にもあります。
uv python
- uv自体はPython不要でインストールできます。そのuvがPythonを管理!!
- https://docs.astral.sh/uv/guides/install-python/
pipx
ならぬuvx
- https://docs.astral.sh/uv/guides/tools/
uvx
はuv tool run
と同じとのこと
uv run
でPythonスクリプト実行- https://docs.astral.sh/uv/guides/scripts/
pipx run
で重宝しているPEP 723をuv run
もサポートしている!!!!
- Pythonプロジェクト管理
- https://docs.astral.sh/uv/guides/projects/
uv init
、uv add
、uv sync
これまではpyenvやasdf・mise、pipx(pipx install
、pipx 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側も負けてないよという点があったらお知らせください
ここまで書いて、朝見かけたこちらの投稿もワクワク感を共有してるのかもなと思ったり
パッケージ管理は標準のvenvとpipで困ったことないタイプだけど、速いpipとしてuvだけ使ってたら気づいたらuvがパッケージマネージャに進化してた。速さは正義。https://t.co/aVHTvBvI09
— ほぼろ (@rhoboro) 2024年8月20日
- 部長というネタバレ、ごめんなさい↩