51
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonのパッケージ管理は「rye」が使いやすい!(随時更新)

Last updated at Posted at 2023-07-01

0. はじめに

以前以下のような記事を書きました。

しかし最近のTwitterの話題を聞きつけて、これより遥かに使い勝手のいいryeというパッケージ管理を使い始めたので自分のコピペ用+備忘録としてシェアします

  • 動作環境
    ・ OS : Windows10 pro(記事更新時Windows11 pro
    ・ rye : 0.9.0(記事更新時0.33.0

1. ryeとは?

かの有名なPythonのWebアプリケーションフレームワークFlaskを作成したArmin Ronacher氏が作成したPythonパッケージ管理ツールで、Rust製なので動作がとにかく速い

2. 今までの管理ツールとの違い

公式の説明によるとryeはPython のインストールと管理、pyproject.toml ファイルの管理、依存関係のインストールとアンインストール、virtualenvs の裏側の管理などを行えるとのことです。

私なりに表で色々比較してみました。
Anacondaは正直初心者向けとして使い勝手いいとは思いますが、conda installでライブラリが見つからないことがある等色々使い勝手が悪いことも多く、さらに商用利用で有償化したので私は以前pyenvとpoetryに変更しました。
しかし、ryeはAnacondaのような悪いとことが無く、さらにpyenvとpoetryの2つを1まとめにしたような使いやすさでした。

Pythonバージョン パッケージ管理 ご利益 点数
素Python venv PythonだけDLすればOK 2
pyenv venv Pythonのバージョン管理ができる! 3
pyenv poetry 依存関係の管理
プロジェクト管理ファイル
venvの自動作成
4
rye rye pyenvにpoetryが加わった感じ 5
Anaconda Anaconda 初心者にとっつきやすい
ただし混ぜるなpip等制約も多い
4

3. ryeの使い方

3-1. ryeの導入(Windows)

ドキュメント通り進めればOKです。
https://rye-up.com/

Windowsの場合は以下で導入可能
①rye-x86_64-windows.exe for 64bit Intel Windowsをダウンロード
②☝をインストール(途中にUVか否か選ぶ箇所あるがそのままEnter)
③環境変数PathにC:\Users\(ユーザー名)\.rye\shimsを登録し、優先順位を上げる(上に移動で移動させる)
④cmdでryeと入力してエラーが出なければOK

なお、会社プロキシが噛んでいる場合はryeのデフォルトのGlobalなpythonがインストールできずエラーになります。その場合は以下で対応可能です

・コントロールパネルから環境変数の変更へ
・プロキシ(HTTP、HTTPS)を環境変数に設定し、Windows再起動
⇒これでプロキシ突破できます

3-2. ryeのコマンド

さて、それ以外のryeコマンドを以下にまとめました。

コマンド 内容
rye --version ryeのバージョン確認
rye self update rye自体のアプデ
rye init ** **プロジェクトの作成
rye pin (pythonバージョン) プロジェクトで使用するpythonバージョン(toolchainと呼ばれてる)を指定
rye sync venvがまだなければ作成し、
pyproject.toml に基づいて virtualenv を更新
rye add ライブラリ プロジェクトにライブラリを加える
(依存関係をプロジェクトに追加)
※addの後にsyncしないと書き込まれない
rye add "ライブラリ>=2.0" addのバージョン指定版
rye add ライブラリ --git=http://github gitの依存関係を満たしてadd
rye add ライブラリ --path=./myfolder ローカルの依存関係を満たしてadd
rye remove ライブラリ addした依存関係を再度削除
rye run ** ryeで実行可能ファイルを実行する
(ex) rye run python --version
rye toolchain list すでにpinでDLされてるPython(toolchain)一覧
rye toolchain list --include-downloadable どのPython(toolchain)がpinコマンド可能か?の一覧
rye toolchain remove cpython@(version) 導入済のtoolchain(version)の削除
rye show プロジェクト情報を確認
rye shell venvを有効にする
※.venv\Scripts\activateに変更されました
rye list add/syncしたライブラリ一覧表示
rye build 配布用のパッケージをビルド

3-3. ryeの使い方サンプル

3-1まで終わってる段階から
今回はpandasとjupyterを使って検証をする場合を想定。
※以下のフォルダに「sample_project」というプロジェクトを作成する

スクリーンショット 2023-07-01 131126.png

⓪cmdを開き、cd C:\Users\user_name\Desktop\sample_folderで移動
rye init sample_project && cd sample_projectでプロジェクト作成しcdで移動
rye toolchain list --include-downloadableで使用可能なバージョン確認
rye pin 3.10.11 でプロジェクトで使用するtoolchain(例では3.10.11)を指定(まだなければ勝手にDL、.python-versionファイルが上書きされる)
rye add ipykernel pandasで使うライブラリ(例ではipykernelとpandas)をaddする
rye syncでvenvを作成しaddを適応させる

すると以下のようになっており、lockファイルを開くと追加されたライブラリ達が確認できる。

スクリーンショット 2023-07-01 131706.png

さらにお試しでrye run python --versionを実行するとpinで指定した3.10.11が使えていることもわかる。

スクリーンショット 2023-07-01 131913.png

4. おわりに

どうだったであろうか?
pyenv+poetryの時は「pyenv local ●●」でまずpythonバージョンを指定し、それからpoetry initでvenv作成して・・とほんの少し面倒でしたが、ryeなら全て完結することがお分かりいただけたと思います。
さらにRUST製だからかpoetryよりもだいぶ高速だと感じました

これからはこれがベストプラクティスになり、パッケージ管理競争が終結することを望みます(笑)

5. 追記(Pytorchの導入)

Pytorchを導入するにはどうするの?ということに言及しておく。
一度venvを作成した後に、以下のようにpyproject.tomlを開き[[tool.rye.sources]]を新規でtorchのURLを記載すればいい。

要するに外部からここのURLを参照してね!ということを宣言するのである

自分のCUDAはnvidia-smiコマンドで調べ、以下のページでそのCUDAに該当するバージョンを探す(私の場合はCUDA12.3ですが、以下URLでは12.1しか存在しないので12.1だと認識しておく)
https://pytorch.org/get-started/previous-versions/

で、そのCUDAのpytorchは以下のようにURL末尾にバージョンを指定する(私はCUDA12.1なので121)
https://download.pytorch.org/whl/cu121
https://download.pytorch.org/whl/cpu ※CPUならこれ

pyproject.toml
↓ ★追記★

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

で、後はrye add torch torchvision torchaudioで無事にaddし、rye sync命令をすれば無事に導入されるはずである。

6. 追記2(Rye+uv)

※最新のRyeをインストールしたらデフォルトでONになっているかもです

Astral社が最近「uv」というパッケージ管理ツールをリリースしたようです。これもRUSTで高速だそうですが、これらは統合していくようです。
Windowsにも正式に対応したらしいので、これを使わない手はないと思います。
というか使ったら爆速でsync(add)できるので有効にしない手はないです。必ずこの設定は有効にしましょう!!

rye self update ← ★ryeのアプデ★

↓ ★uvモードを有効にする★

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

なお、rye --versionでuvがONしてるか確認可能

<参考>

51
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?