メインコンテンツへスキップ

Rust製の爆速Pythonパッケージ管理ツール uv

·3 分
2025/06 Python Rust パッケージ管理 高速化 開発ツール

Rust製の爆速Pythonパッケージ管理ツール uv

引用元:https://news.ycombinator.com/item?id=44357411

acheong08 2025/06/23 18:56:33

以前はvenvとpipで十分って思ってたけど、共有サーバーでpipが遅いしキャッシュで容量食うしで困ってuvにしたら全部うまくいったんだ。
まだ使ってないなら、たった5分試してみて損はないよ。

psychoslave 2025/06/23 20:00:29

uvはmiseみたいなもっといろんな言語に対応してるツールと比べてどうなんだろう?
俺はmiseにASDFから乗り換えたんだけどさ。

espdev 2025/06/23 19:27:30

req.txtなんてマジ最悪。
uvとかPoetry, PDMみたいな新しいツールを使ったら、もうpipとreq.txtには戻れないよ、マジでめちゃくちゃだから。
uvは超速くて最高だけど、まだちょっと荒削りなとこやバグもあるね。

yjftsjthsd-h 2025/06/23 20:06:53

pipのキャッシュが容量食ってたって話だけど、uvはストレージの使い方うまい?
もしそうなら、具体的にどうやって?(共有したりとか?)

kortex 2025/06/23 20:47:07

俺たちはpyproject.tomlからreq.txtを作るのにuvを使ってるよ。
ロックされたバージョンを得るためにね。
Makefileでの例はこんな感じ。
<code>uv pip compile pyproject.toml -o requirements.txt</code>
<code>uv pip compile –extra=dev pyproject.toml -o requirements.dev.txt</code>

_vya7 2025/06/23 20:51:35

2009年頃にpipとvenvを使ってたの覚えてるな。
5〜10年前に確認した時は、コミュニティではDocker使うのが主流って話だったけど、今はそうじゃないの?

espdev 2025/06/23 22:33:04

コメント5のreq.txtを作るのって何のため?
古いCI/CDパイプラインをサポートするためとか?
uv.lockでロックされたバージョンとか全部含まれてるんだから、それで十分じゃない?

tomjakubowski 2025/06/23 21:21:56

uvのマジで最高な機能は、これまでのvenvを使ったやり方とそのまま使えること。
ただ<code>uv venv</code>って打てばいいんだぜ。

oofbey 2025/06/23 21:52:03

uvは大好きだけど、一つだけ注意点がある。
uvxだけは触るな。
あれで何時間も無駄にしたんだ。
なんであれがあるのかは分かるけど、組み込みのフットガン(危険な機能)だと思うよ。
uvxを避けていれば、問題なく使えるさ。

level09 2025/06/24 13:26:40

残念だけど、uWSGIみたいにすごく大事なライブラリがuvと根本的に互換性がないんだ。
そのせいで、カスタムuWSGIを使ってる俺のアプリは全部ロールバックしなきゃいけなかったよ。

bmitc 2025/06/23 22:52:40

俺がuvに乗り換えてないのはRuffでの経験があるからなんだよね。
Ruffは「Flake8、isort、Blackとドロップインパリティ」って言うけど、あれ全然本当じゃない。
少なくともisortに関しては、Ruffは自分たちがやりたいことだけ再実装して、もし機能とか設定が足りないなら、Ruffから昔のisortツールを呼び出せって言うんだよ。それ何の意味があるの?
Ruffはただ既存のいろんなツールを部分的に再実装して、新しいのをちょっと追加しただけじゃん。
だからRuffを使うと、結局使うツールの数はまた増えることになるし、Pylintがやってること全部はやってくれない。
uvへの移行については、Poetryより「速い」ってこと以外に、どんなメリットがあるのか良い話を聞かないんだよね。
今唯一知ってるユニークな点は、uvがPython自体をインストールできることで、Pyenvみたいなツールがいらなくなることくらいかな。
それは興味あるけど、「速い」だけじゃ十分な理由にならないんだよ。

pentaphobe 2025/06/24 19:28:20

興味本位なんだけど、何が上手くいかなかったの?
俺はmiseの中で(そして外でも)Justをよく使ってるよ、ほとんど埋め込みシェルとかPythonスクリプトでね。
miseのタスクもちょっと使ったけど、俺にはそんなに便利さを感じなかったかな。
それともShebang付きのJustfileのこと?
どっちにしても、どんな問題に当たったか知りたいな(手伝えるかもだし)。

fsh 2025/06/23 20:12:05

uvは同じパッケージをハードリンクするから、仮想環境を追加しても容量がすごく少なくて済むんだよ。

acheong08 2025/06/23 21:58:05

pipもuvもパッケージは~/.cacheにキャッシュするんだけど、uvはそれを/tmpに変えたり、コピーじゃなくてシンボリックリンクにしたりできるんだ。

snerbles 2025/06/23 20:32:22

ただし、マウントポイントを跨いじゃう場合は別だけどね、uvがちゃんと警告してくれるから大丈夫。

wrboyce 2025/06/23 20:06:48

俺は両方使ってるよ!
uvはmiseでグローバルに入れた。
それでuvのツールは“mise use -g pipx:foo”みたいに管理できるんだ。

unclad5968 2025/06/23 21:08:21

パッケージ管理ツールの「これが正解」みたいなアドバイスって毎年変わるよね。
ちょっと前はvenvだったのに、pipenv、poetry、docker、そして今はuv。
これでエコシステムが落ち着いてくれるといいけど、どうなるかな。

tetha 2025/06/23 20:45:12

俺にとって一番大きかったのはね、uvが説明するのがめちゃくちゃ簡単で、特にPythonを毎日書くわけじゃない人にとって、使うのが本当に楽ってこと。
pipとかだと、コンフィグファイルとvenvで、まず適切なvenvを用意するのに2ステップくらい覚えなきゃいけない — 作って、そこにインストールする — し、テスト実行とかスクリプト実行するたびに、変なShebang形式か、venvをactivateすることを覚えなきゃいけない。
エラーメッセージも全然助けにならないし。まぁ、あのセットアップは標準化されてないし公式にお墨付きがあるわけじゃないから仕方ないのかもだけど。
とにかく、「Import Errors」とvenvを脳内で繋げる作業を叩き込まないといけないんだよね。
できなくはないけど、慣れてない人にこれを教える時に、ツール全体がどれだけ…「ややこしい」って言葉が良いかな…かを思い知らされたよ。
それが今、チームメンバーは「uv run」、「uv add」、「uv sync」だけ覚えればいいんだ。
これで全体がすごく楽になったし、彼らにとっても全然抵抗がなくなったね。

varikin 2025/06/24 01:45:45

uvはnpmとかああいう感じだと思っていいよ。
新しいPythonのpyproject.tomlはpackage.jsonに似てて、プロジェクトの説明とか依存関係を定義するんだ。
uvはこれを使うツールで、依存関係管理、ビルド、PyPi公開、テストとかのフック追加がすっごく簡単。
package.jsonとかなり似てるね。
仮想環境も自動で面倒見てくれるけど、自分でやってもOKだよ。

projectdelphai 2025/06/25 06:54:24

君はuvがどれだけ“速い”か、多分甘く見てるね。
マジで全然違うんだよ。
僕が切り替えた理由であり、今も言ってるのが、「uvは速すぎて、何かやってるか分からないくらい」って言葉。
最初に使った時、ちゃんと動いてるか確認したもん。
使わない理由(別のマネージャー不要とかpipで十分とか)も聞いたけど、正直あんまり納得できないかな。
でもpoetry使ってるなら、絶対乗り換えるべき!
uvは待ち時間がないpoetryだよ。
一番複雑なやつでも一日でいけるはず。
僕が時間かかったのはdockerをuv用に組み直したからだけど、それはdockerのせいであってuvのせいじゃないよ。

pentaphobe 2025/06/26 16:47:44

あー、なるほどね、ありがとう!
もしかしたらもう直ってるかもだけど、
もっと色々移す前に、今すぐ試してぶっ壊してみるつもりだよ。

kissgyorgy 2025/06/23 21:03:57

ユーザーのホームのキャッシュフォルダに、インストールした全パッケージのグローバルキャッシュがあるんだ。

mistrial9 2025/06/23 22:23:40

最近、実験的なリポジトリで似た話あったね。「ちょー簡単、$uv a b cだけ」ってやつ。
裏側は結構無駄があるっぽい?
でもね、標準のGNU-Debian-Ubuntu環境で問題なくスムーズに動いたんだ。

PeterStuer 2025/06/24 08:12:17

俺も自分で切り替えてみたんだ。
思ってたよりずっと簡単でスムーズだったね。

ed_elliott_asc 2025/06/23 20:57:22

俺は「別に試す必要ないな」ってコメントしに来たんだけど、
そのコメント読んで、今すぐ試してみようって気になったよ!

icedchai 2025/06/23 22:50:43

マジそれ!
最近miseで開発環境いくつか作ったんだけど、古いのはpoetryで新しいのはuvなんだ。
uvはマジでサクサク動くね。
夜と昼くらい違うよ!

aequitas 2025/06/23 19:48:13

Pip-toolsとrequirements.txtで乗り切ってきたけどさ、uv試したらマジでもう戻れないね!超速くて便利なんだわ。

polivier 2025/06/23 18:17:27

uv初めて使った時、あまりに速すぎて絶対なんか間違えたと思ったよ!pipとは全然違う速さだったね。

tux3 2025/06/23 19:14:55

uvでも200msかかることあるし、エンター押してからプロンプト出るまで微妙に遅延感じるんだよね。Poetryならコーヒー淹れて待てば終わってるのに。

Numerlor 2025/06/23 20:09:25

pipenvやPoetryが出てきた時も、きっと同じこと言われてたんだろうね。なんか面白いわ。

もっとコメントを表示(1)
icedchai 2025/06/23 22:51:59

前の会社でPoetryが依存関係の解決に何分もかかったことがあったよ。絶対壊れてると思ったけど、まぁ最後には終わったかな。

projectdelphai 2025/06/25 06:56:24

Poetryが遅すぎて待ってられなくてさ、キャッシュとリスト全部消してパッケージ再インストールした方が早いと思ったことあるわ。uv試したら即乗り換えたね。

icedchai 2025/06/25 14:04:19

lol。うんうん、俺もやったやった。haha。前の会社はpoetry.lockの大量更新にめちゃ厳しかったから、あの時はできなかったけどね。

baby 2025/06/23 18:18:07

俺も同じくlol!マジでスムーズすぎてPythonじゃないみたいだよ。

johnfn 2025/06/23 19:38:39

そりゃそうだ、Rust製だからね。😊

augustflanagan 2025/06/23 18:37:11

俺もつい先週同じ経験したとこでさ、絶対おかしいだろって思ったよ。もう完全に乗り換え組だね。

nialse 2025/06/23 18:28:04

俺もそうだよ!
最初は疑ってたけど、使ってみたら手放せなくなったわ。
まじ爆速!

theLiminator 2025/06/23 17:43:25

uvとruffは”車輪の再発明はするな”って意見への反例だね。
ただやるんじゃなくて、目的があれば桁違いに良いものを作れるんだ。

0cf8612b2e1e 2025/06/23 18:09:01

Pythonのパッケージ管理の歴史を見ると、みんな今のやり方より良いものが作れるって思ってるのがよく分かるね。

eviks 2025/06/23 17:58:07

車輪を再発明したんじゃなくて、”ただ”木をもっと丈夫な素材に変えて、10倍速く回れるようにしたってことだね!

mort96 2025/06/23 18:27:58

正直、「車輪の再発明はするな」って言葉、全く意味分かんないんだよね。
いつまでも木製の円盤を車輪にしてるわけじゃないだろ?
もっと良い車輪はずっと発明してきたんだから、ソフトウェアでも同じことやろうぜ!

socalgal2 2025/06/23 18:48:57

具体的に何が変わって速くなったのか気になるな。
PythonからRustに変えただけでネットワークやファイルI/Oは速くならないでしょ?
多分、良いアルゴリズムを選んだり、並列化したりしたおかげだと思うんだ。
PythonかRustかっていうよりね。(Pythonで並列化しにくくてRustで簡単なら話は別だけど)

nickelpro 2025/06/23 19:16:24

uvは純粋にパフォーマンスを良くしただけなんだ。
Pythonの環境管理とかパッケージングの仕組み自体は何も変えてないよ。
改善はPythonビルドシステムエコシステム全体の頑張りと合意形成のおかげなんだ。

jjtheblunt 2025/06/23 18:25:36

”桁違いに良い”って言葉について。
関係ないけど、”10倍”っていう短い言い方があるのに、なんでそのフレーズ使うんだろうね?不思議。

globular-toast 2025/06/23 20:20:07

いや、実は違うんだ。
uvの主な違いの一つは、もうvenvのこと考えなくていいってことだよ。
最近のPyConで作者の一人が話してる動画がこれだよ:
https://www.youtube.com/watch?v=CV8KRvWKYDw
(他の場所で貼ったのとは別の動画ね)

simonw 2025/06/23 19:04:51

XMLがあるのにJSONを発明した理由を聞かれた時、Douglas Crockfordは言ったんだ。
「車輪を再発明することの良い点は、丸いものが手に入ることだ」ってね。
https://scripting.wordpress.com/2006/12/20/scripting-news-fo

nickelpro 2025/06/23 21:10:54

uvってどうやって動くの?venvを作るんだよ。ここで言うのはPEP 405の概念で、Pythonの”venv”モジュールじゃないからね。

jerf 2025/06/23 21:05:15

プログラムはいつも外部リソース待ちだからスクリプト言語の遅さは関係ないって言うけど、それウソだよ。計算が多い場合や、抽象化を重ねるとマジで遅くなる。プロファイルしたことないなら絶対やるべき!
あと、動的言語はマルチスレッドが苦手。コンパイル言語にすると100倍速くなることもザラにあるんだ。
動的言語がダメってわけじゃなくて、パフォーマンスの現実を知ってほしいんだよね。

lmm 2025/06/24 01:27:38

実装の細かいことはどうでもいいんだよ。uvはPEP 405に従ってるかもだけど、そうじゃなくてもうまくいく。
大事なのは、他のPythonパッケージ管理ツールにあるような余計な面倒なことがないってこと。

0cf8612b2e1e 2025/06/23 19:36:22

uvがインタープリターの切り替えをすごく簡単にするところには同意しないな。3.11から3.12へ簡単に変えられるのはpybiの考え方だ。
他のツールでもできるけど、uvに組み込まれてると違う設定をブートストラップしやすいんだよね。

nickelpro 2025/06/24 02:34:51

uvがPEP 405に従ってるってのは超大事なんだよ。それがuvを単なる実装の一部にしてるんだ。
uvを他のツールと入れ替えても開発環境を変えなくていい。
これこそが標準の目的なんだから。

RhysU 2025/06/23 22:08:34

> 動的スクリプト言語はマルチスレッドとか複数コア使うのが苦手…
この制限がない動的スクリプト言語ってどんなのがあるの?例を教えてほしいな。
私、その辺詳しくないんだよね。

socalgal2 2025/06/23 21:24:34

低レベル言語が速いのは分かるけど、パッケージマネージャーって計算そんなにしないんだよ。
主な仕事はダウンロード、解凍、ファイル書き込み。
依存関係の制約解消もボトルネックじゃない。
JavaScriptなら1000件並列ダウンロードとか超簡単だよ。解凍や書き込みも並列でいけるはず(Pythonは知らないけど)。

nickelpro 2025/06/23 19:37:45

確かにpyenvより速くて良いけど、仮想環境っていう仕組み自体はuvが発明したわけじゃないんだ。
uvは他のツールよりPythonエコシステムを上手くやってるけど、やってることは関連するPEPで決まってる標準的なことだよ。

simonw 2025/06/23 21:12:27

JSONのどこが変なの?
個人的にはバイナリデータに対応してないのが残念なくらいかな。
base64にするのがちょっと面倒だよね。

bxparks 2025/06/23 18:42:44

「order of magnitude」って言葉、対数スケールでしょ。3.16倍から31.6倍くらいの間ってことだと思うよ。

lmm 2025/06/24 03:16:22

標準に従うってことは、昔のPythonの失敗を永遠に残すってことじゃない?標準があるから進歩できないんでしょ。uvがすごいのは標準に従ってない部分でしょ、きっと。

pityJuke 2025/06/23 20:26:30

ロックファイルって標準で決まってるの?それともuv独自の仕様なの?

jerf 2025/06/24 13:44:59

uvが他のより全然速くないって言ってるけど、それは間違いだよ。実際は速いんだ。Pythonはみんなが思ってるよりずっと遅いんだよ。エンジニアはそれに気づいてない人が多いんじゃないかな。

psunavy03 2025/06/23 22:12:00

標準がいっぱいあってカオス、みたいなxkcdの漫画あるよね、それだ。

もっとコメントを表示(2)
haiku2077 2025/06/23 18:52:51

車輪の再発明って言うけどさ、車のタイヤだって昔と今じゃ全然違うでしょ?技術が進歩すれば見た目は同じでも性能は全然違うものになるんだよ。uvもタイヤみたいなもんじゃない?

aalimov_ 2025/06/23 18:51:57

「車輪の再発明」って、車輪っていう概念そのものを再発明するって意味だと思ってた。Boring companyとかTeslaが考えてる地下トンネルのやつみたいにね。速いパッケージマネージャーはただの速いパッケージマネージャーで、概念は変わらないんじゃない?

lmm 2025/06/24 01:29:38

Pythonのパッケージ管理、マジでひどかったよね。みんな同じ失敗繰り返してただけ。でもuvは初めてその悪い流れを断ち切ったんだ。PythonじゃなくてRustで作られてるからかな。

socalgal2 2025/06/24 17:42:09

Rustだから速いんじゃなくて、アルゴリズムと設計のおかげで速いんだよって話だよ。
uvの動画でもRustじゃなくて設計での最適化が主な高速化要因だって言ってた。
あと、人を馬鹿にするのはやめな。
C/C++とかassemblyでAAAゲーム作ったことあるから、最適化や動的言語のことも知ってるんだ。
「Rustだから速い!」って嘘に騙されないで。
速い理由はそこじゃないんだよ。

larkost 2025/06/23 20:19:23

ちょっとした注意点なんだけど、すごく低スペックな環境(例えばAWS T2.microでWindowsとか)だと、uvが同時にダウンロードしすぎてタイムアウトすることがあるよ。
そんな時は、環境変数UV_CONCURRENT_DOWNLOADSを使ってダウンロード数を1とか2に制限すると良いよ。
これは極端な例だけど、uvはモジュールごとにスレッド作るのが積極的すぎると思うんだ。
サーバーごとの通信速度を見て自動調整するべきじゃないかな。

ehsankia 2025/06/23 20:38:30

全然極端じゃないよ。
みんな趣味の開発とかで一番安くて小さいVPSよく使うもん。
私も使ってるよ(AWSじゃないけど)。
情報共有ありがとう!
uvが自動で検知してくれるようになると良いね。

choppaface 2025/06/24 06:47:16

uvは大規模プロジェクトだとファイルディスクリプタが足りなくなったりすることもあるし、インストールが毎回同じ結果になるわけじゃない(再現性がない)んだ。
まだ成熟が必要だね。

leonheld 2025/06/23 17:39:58

uvのuv add <mydependencies> –script mycoolscript.pyって書き方と、#!/usr/bin/env -S uv runをスクリプトの先頭につけるのがすごく気に入ってるよ。
これでPythonスクリプトを簡単に実行できるのが最高!

simonw 2025/06/23 18:12:43

uvのinline dependency機能を使って、AI(Claude)に指示書なしでPythonスクリプト作らせてみたんだ。
URLを指定したら、httpxとbeautifulsoupを使ってスクレイピングして、ページのリンク(URLとテキスト)をCSVで返すスクリプトだよ。
ちゃんとdependenciesも指定してくれた。
ここでその結果が見れるよ: https://claude.ai/share/57d5c886-d5d3-4a9b-901f-27a3667a8581

sunaookami 2025/06/23 19:09:32

去年Simon Willisonさんの投稿見てから、彼のuvシステム指示をLLMでいつも使わせてもらってます、ありがとう!
「XYZのPythonスクリプトちょうだい」ってAIに頼んで、uv runで実行できるのがめちゃくちゃ便利だよ。
AIがdependenciesがインストールされてないって困ったり、起動方法を知らなかったりすることが多いから、「実行する時はuv run script-name.pyを使ってね。
dependenciesは自動でインストールされるから。Stdlibsはdependencies配列に書かなくていいよ」って指示も追加したんだ。
AIがStdlib(例えばjson)をdependenciesに入れようとして混乱するのを防ぐためだよ。

varunneal 2025/06/23 18:17:21

私の経験だと、Claude Sonnetはuv scriptの書き方を忘れちゃうことが多いんだよね。
だいたいuv projectの書き方を使いたがるから、毎回ドキュメントをコピペして教えてあげてる感じ。

bilbo-b-baggins 2025/06/24 09:59:37

俺が見つけてきてやったぜ。
これ見てくれよ → https://github.com/shakefu/cursor-rules/blob/f4dffbbf04ce99f

jsilence 2025/06/23 18:06:31

Marimo.ioとuvの組み合わせ最高!uv入れるだけで再現性高いアプリすぐ作れるんだって。めっちゃホットな組み合わせだね!

intellectronica 2025/06/23 17:49:58

uvのおかげで、環境管理とか気にせず気軽にスクリプト書けるようになったんだ。超便利だよ!
詳しくはこれ見てね!
https://everything.intellectronica.net/p/the-little-scripter
https://www.youtube.com/watch?v=8LB7e2tKWoI
https://github.com/intellectronica/ez-mcp

kristjansson 2025/06/23 18:03:46

ごめん!前のコメントの例を勘違いしてたわ。指摘は無視してね。プロジェクトでuv add --scriptを使う話をuv addと間違えてただけ。彼らはドキュメントいっぱい載せてるけど、run --withかPEP723サポートがもっと気に入ると思うよ。ドキュメントのリンクこれね!
https://docs.astral.sh/uv/guides/scripts/

misnome 2025/06/23 18:13:38

あれ?そのPEP723サポートって、最初のコメントの人がまさに使ってることじゃないの?

oblio 2025/06/23 22:55:12

「mydependencies」って何?設定ファイルのこと?

leonheld 2025/06/24 09:27:33

ごめんね、「mydependencies」はPyPIから取ってくるパッケージのことだよ。
pip install ...みたいな感じで使うやつね。

mh- 2025/06/23 17:25:00

最近使い始めたんだけど、pipに慣れてると速すぎてマジで混乱する!終わったのか分かんないくらいあっという間だったんだよね…

pu_pe 2025/06/23 17:35:21

ちょっと前にuv試したんだけど、速さと使いやすさにマジで衝撃受けたよ。もうpip使う理由ないし、Pythonだけならcondaもいらないんじゃない?

oceansky 2025/06/23 17:52:30

pyenvとかpoetryもいらなくなりそう!

記事一覧へ

海外テックの反応まとめ
著者
海外テックの反応まとめ
暇つぶしがてらに読むだけで海外のテックニュースに詳しくなれるまとめサイトです。