先週にRuffを開発しているAstralがuvを発表しました。
uvは現在のところはvenv, pip, pip-toolsの基本的な機能を提供していますが、将来は"Cargo for Python"になることを目標にしています。
一見すると乱立しているPythonのパッケージ管理ツールにもう一つ加わったように見えますが、Ryeの開発者のArminとuvの開発チームは連携していて、同時に次のような発表をしています。
Rye Grows With UV | Armin Ronacher's Thoughts and Writings
- Ryeはもともとより良いパッケージツールがどうあるべきかの実証のために作られていて、中身は既存のツールのツギハギだった
- Ryeがpip-toolsやvirtualenvの代わりにuvを使うオプション
rye config --set-bool behavior.use-uv=true
を提供する - いつかuvがRyeの機能に追いつくまでRyeの開発は当面続く
- RyeはAstralが引き継ぎ、Arminも当面Ryeの開発に参加する
ということで、Ryeを使っている人はuvを直接使う必要はなく、試してみたい場合は上記の設定をするのがよさそうです。
私の場合はIssue報告を再現するためにパッケージをインストールしてスクリプトを実行するのにはまだvenvとpipの方が簡単なので、直接uvを使う機会も多いです。その場合の使用感を書いておきます。
venvとuv venvの比較
- venv の時は
alias mkvenv='python3 -m venv --prompt . .venv'
というエイリアスを使っていた - uv venv はターゲットパスを指定しないと ".venv" を使うので一手間少ない
--prompt
オプションがなかったのでuvにプルリクエストを送って取り込んでもらった。今朝リリースされた0.1.6に入っている。--prompt .
がデフォルトなので、上記エイリアスの--prompt .
も不要で、uv venv
だけでOK。もうエイリアスいらない。- ただし、
rye pin 3.12
してからmkvenv
したら rye 管理のPython 3.12を使ってくれるのに、uv venvはwhich python3.12
で見つからないとエラーになるのでPATHを通しておくなどの手間が必要になる
pipとuv pipの比較