Open7

Poetryからrye+uvに乗り換えてみる

haganehagane

Ryeのインストール

公式ドキュメントをもとにインストールしていく
https://rye-up.com/guide/installation/

curl -sSf https://rye-up.com/get | bash

インストール時にuvを使うかどうか,PythonインタプリタもRyeで管理するか聞かれる.今回はどっちも使う感じにした.

haganehagane

次にデフォルトで使うPythonのバージョンを聞かれる.
初期設定だとcpython 3.12だが,普段は3.10を使うので変更してみる.
コンソールにcpython@3.10と打って続行.
公式ドキュメントを見ると3.9~3.12まで対応してるみたい
インストール完了後,source $HOME/.rye/envでRyeを有効にできる.
Pythonの管理もRyeに任せる場合,以下のコマンド実行でインタプリタがダウンロードされる.

rye fetch
haganehagane

プロジェクト作成~ライブラリの追加

プロジェクト作成

プロジェクトは以下のコマンドで作れる

rye init test_project

直下にtest_projectが作られる.プロジェクトに移動して,

rye sync

でvenv等が作れる.
仮想環境で用いるPythonのバージョンを固定する場合は,

rye pin cpython@3.10

でできる

ライブラリの追加

scikit-learnを追加してみる.

rye add scikit-learn

これだけ.poetryと同じ感じでできる.

pytorchの追加もしてみる.
別途参照するリンクを追加しないといけないが,Ryeの公式にやり方が書いてある.
https://rye-up.com/guide/faq/
プロジェクト直下のpyptoject.tomlに以下を追加

[[tool.rye.sources]]
name = "pytorch"
url = "https://download.pytorch.org/whl/cu118"

次に

rye add torch
haganehagane

uvとpipの仮想環境構築速度の比較

以下コマンドでuvとpipを変更できる

rye config --set-bool behavior.use-uv=true
rye self update

uv: rye sync 61.99s user 13.13s system 58% cpu 2:08.42 total
pip: rye sync 158.59s user 50.01s system 47% cpu 7:16.70 total

haganehagane

uvでtorchvisionのインストールは失敗した.pipに切り替えた場合うまくいったので,まだバグがあるのかも?
エラー文

Generating production lockfile: /home/hagane/usr/tmp/rye_uv_test/torch_test/requirements.lock
  × No solution found when resolving dependencies:
  ╰─▶ Because torchvision==0.17.1+cu118 depends on torch==2.2.1 and you require torch==2.2.1+cu118, we can conclude that you require==0a0.dev0 and torchvision==0.17.1+cu118 are
      incompatible.
      And because you require torchvision==0.17.1+cu118, we can conclude that the requirements are unsatisfiable.
error: could not write production lockfile for project