話題のRyeについて調べてみた
Ryeは、開発プロセスを簡素化・設定の手間を減らし、Pythonプロジェクトの全体的な開発者体験を向上させます。Ryeはシンプルで軽量な設計を持ち、またキャッシュを利用してインストール時間を短縮できる特徴などを持つため、Poetryやpipと比べて依存関係の管理やインストールを速くすることができます。
Ryeの概要
Ryeは、Pythonのパッケージマネージャーおよび環境管理ツールの一つで、迅速かつ効率的にPythonの開発環境を構築するためのツールです。Ryeは、特に以下の点で注目されています。
軽量で高速
Ryeは軽量で、高速に動作することを重視しています。これは、特に大規模なプロジェクトや複数のプロジェクトを管理する場合に有利です
依存関係の管理
Ryeは依存関係の管理を簡素化し、必要なライブラリを迅速にインストールおよび更新することができます。また、依存関係の解決に優れ、バージョンの競合を最小限に抑えます
環境の分離
仮想環境の管理を容易にし、プロジェクトごとに異なるPythonバージョンやライブラリのバージョンを使用することができます
統合的なツール
Ryeは、パッケージのインストール、アップデート、アンインストールだけでなく、スクリプトの実行、仮想環境の作成と管理、依存関係の解決など、開発者が必要とする多くの機能を一つのツールで提供します
ユーザーフレンドリーなインターフェース
コマンドラインインターフェース(CLI)が使いやすく設計されており、直感的に操作できます
Ryeは、pipやcondaの代替または補完として利用されることを目指しており、特に速度と効率性を求める開発者にとって有力な選択肢となります。
インストール手順
Mac
Homebrewがない場合
下記のコマンドを実行
curl -sSL https://install.ryeup.com | sh
Homebrewがある場合
下記のコマンドを実行
brew install rye
Windows
下記のコマンドを実行
irm https://install.ryeup.com -useb | iex
インストールの確認
下記のコマンドが実行できることを確認する
rye --version
下記の内容が表示されたら正常にインストールができています。
rye 0.34.0
commit: 0.34.0 (2024-05-20)
platform: macos (aarch64)
self-python: not bootstrapped (target: cpython@3.12)
symlink support: true
uv enabled: true
よく使うコマンド
プロジェクトの初期化
プロジェクトの初期化を行います。このコマンドを実行すると、プロジェクトディレクトリ内に基本的な構成ファイルが生成されます。
rye init
パッケージをプロジェクトに追加
指定したパッケージをプロジェクトに追加します。依存関係の解決とパッケージのインストールが自動的に行われます。
rye add <パッケージ名>
パッケージを削除
rye remove <パッケージ名>
指定したパッケージをプロジェクトから削除します。
仮想環境を設定する
pyproject.toml に基づいてプロジェクトの依存関係を同期します。このコマンドは、必要なパッケージをインストールし、仮想環境を設定します。
rye sync
コマンド実行
プロジェクトの仮想環境内で任意のコマンドを実行します。
rye run <コマンド>
バージョンのインストール
特定のPythonバージョンをインストールします。
rye install <Pythonバージョン>
バージョンを指定する
プロジェクトで使用するPythonバージョンを指定します。
rye use <Pythonバージョン>
パッケージとバージョンを表示する
インストールされているパッケージとそのバージョンを表示します。
rye list
最新バージョンにアップグレードする
指定したパッケージを最新バージョンにアップグレードします。
rye upgrade <パッケージ名>
pyproject.lock ファイルを生成する
依存関係を固定し、pyproject.lock ファイルを生成します。これにより、依存関係のバージョンが固定され、再現性のあるビルドが可能になります。
rye lock
ここで出力されるlockファイルなのですが、poetryとは違ってpipのrequirements.txtと同じ形式で出力されます。さらにはコメントでどのライブラリからの依存かも出力してくれます。Dockerfileを作成するときにコンテナの中にpoetryのようにryeをインストールする必要もないので手間がさらに省けます。
# generated by rye
# use `rye lock` or `rye sync` to update this lockfile
#
# last locked with the following flags:
# pre: false
# features: []
# all-features: false
# with-sources: false
# generate-hashes: false
-e file:.
annotated-types==0.7.0
# via pydantic
anyio==4.4.0
# via httpx
# via starlette
# via watchfiles
botocore==1.34.113
# via boto3
# via s3transfer
botocore-stubs==1.34.94
# via boto3-stubs
certifi==2024.2.2
# via httpcore
# via httpx
# via requests
charset-normalizer==3.3.2
同等のプログラムとの比較
pipとの比較
Ryeは、Pythonプロジェクトの統合的な管理を目指したツールであり、特に複雑な依存関係の管理や仮想環境の設定を簡素化することに強みがあります。一方、pipはシンプルで広く普及しており、パッケージ管理に特化しています。
特徴 | Rye | Pip |
---|---|---|
目的 | パッケージ管理、環境管理、スクリプト実行 | パッケージ管理 |
設計思想 | 軽量かつ高速、統合的なツールチェーン | シンプルで標準的なパッケージ管理 |
仮想環境管理 | 内蔵 | venvやvirtualenvを使用 |
依存関係の管理 | 優れた依存関係解決と固定 | 基本的な依存関係解決 |
Pythonバージョン管理 | Pythonバージョンのインストールと使用の管理 | 管理なし(pyenvや他のツールと組み合わせる) |
初期化コマンド | rye init | なし |
パッケージの追加 | rye add <パッケージ名> | pip install <パッケージ名> |
パッケージの削除 | rye remove <パッケージ名> | pip uninstall <パッケージ名> |
パッケージのリスト表示 | rye list | pip list |
依存関係の同期 | rye sync | なし |
依存関係の固定 | rye lock | pip freeze > requirements.txt |
poetryとの比較
RyeとPoetryはどちらも強力なパッケージおよび環境管理ツールですが、それぞれに独自の特徴と強みがあります。Ryeは軽量で高速なパフォーマンスを重視して設計されており、Poetryは再現性のあるビルドと依存関係の管理を重視しています。
特徴 | Rye | Poetry |
---|---|---|
目的 | パッケージ管理、環境管理、スクリプト実行 | パッケージ管理、環境管理、依存関係管理 |
設計思想 | 軽量かつ高速、統合的なツールチェーン | 再現性のあるビルド、シンプルな設定 |
仮想環境管理 | 内蔵 | 内蔵 |
依存関係の管理 | 優れた依存関係解決と固定 | 優れた依存関係解決と固定 |
Pythonバージョン管理 | Pythonバージョンのインストールと使用の管理 | 使用するPythonバージョンの指定が可能 |
初期化コマンド | rye init | poetry init |
パッケージの追加 | rye add <パッケージ名> | poetry add <パッケージ名> |
パッケージの削除 | rye remove <パッケージ名> | poetry remove <パッケージ名> |
パッケージのリスト表示 | rye list | poetry show |
依存関係の同期 | rye sync | poetry install |
依存関係の固定 | rye lock | poetry lock |
失敗談
2024年6月5日時点でバージョン0.34.0であるため、プログラムとしてまだ完璧ではないようです。
機械学習のライブラリである、lightgbmをApple SiliconのMacにインストールするときなどにエラーが発生してしまいます。この時は暫定対応としてpipとの併用が必要になります。
参考資料