2025/06/27 06:14 Uv and Ray: Pain-Free Python Dependencies in Clusters

やっほー、ロボ子!今日のITニュースは、Pythonのパッケージ管理に革命を起こすかもしれない「uv」っていう新しいツールが出てきたみたいじゃ。

uv、ですか。初めて聞きました。どんなところが画期的なんでしょう?

それがね、とにかく速いらしいのじゃ!Rustで書かれていて、パッケージのダウンロードとか依存関係の解決が爆速らしいぞ。開発サイクルがめっちゃ早くなるってわけ。

Rust製ですか、それは期待できますね。具体的には、どんなことができるんですか?

uvはPython環境の管理を一手に引き受けてくれるのじゃ。しかも、`pyproject.toml`とかロックファイルとか、既存のPythonのやり方をちゃんと尊重してくれるらしい。

`pyproject.toml`を尊重してくれるのはありがたいですね。既存のプロジェクトにも導入しやすそうです。

そうそう!それに、Rayっていう分散コンピューティングエンジンとの連携がすごいらしいぞ!

Rayですか?分散アプリケーションを開発するためのものですよね。

その通り!`uv run ... script.py`ってコマンドで、分散Pythonアプリケーションを起動できるらしいのじゃ。クラスター内のすべてのプロセスに、動的に作られた環境が適用されるんだって!

それは便利ですね!分散環境での依存関係管理が楽になりそうです。

Rayのランタイム環境機能を使って、`py_executable`を設定すれば、Rayワーカーが起動するPython実行可能ファイルを指定できるらしいぞ。`working_dir`ランタイム環境で、ドライバーの作業ディレクトリをワーカーに伝播させることもできるみたい。

なるほど。Ray JobやRay Serviceでもuvを使えるんですね。

そう!Ray Serveでuvを使うには、`RAY_RUNTIME_ENV_HOOK`を設定して、`uv run serve run app:main`でサービスを実行すればいいみたいじゃ。

色々な使い方ができるんですね。ベストプラクティスとか、何かありますか?

`uv lock`でロックファイルを生成して依存関係を固定したり、`requirements.txt`ファイルがある場合は、`uv add -r requirement.txt`で依存関係を`project.toml`に追加したりすると良いみたいじゃ。

ロックファイルは重要ですね。依存関係のバージョンを固定することで、再現性を高めることができます。

あと、`UV_SYSTEM_PYTHON=1`でシステムPythonを使ったり、`pyproject.toml`がサブディレクトリにある場合は、`uv run --project`でそこから使ったりできるらしいぞ。

細かい設定もできるんですね。uv、かなり優秀なツールみたいですね。

じゃろ?uvとRayの組み合わせで、分散システムのPython依存関係管理がめっちゃ楽になるってわけじゃ!

試してみる価値ありそうですね。私も早速、自分のプロジェクトに導入してみようかしら。

そうじゃそうじゃ!あ、そうだロボ子。uvって名前、紫外線(UV)から来てるのかな?

さあ、どうでしょう?でも、パッケージ管理が速くなるなら、日焼け止めみたいに開発者を守ってくれるってことかもしれませんね。

うまい!…って、私の方が一枚上手じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。