Python のパッケージ管理ツールは幾つかあります。 Armin Ronacher さんが開発した rye が使いやすかったのでインストールや基本的な利用手順をメモしておきます。 Armin Ronacher さんは rye の他に flask や jinja、click 等を開発されているそうです。 また、rye が初めて公開されたのは 2023 年 5 月だそうです。 今回は macOS 13.4.1 で検証しました。
余談
macOS であれば rye を homebrew からインストールすることも可能なようです。 但し、公式ページでは homebrew によるインストール手順をガイドしておらず、シェルスクリプトでのインストール手順がガイドされている為、今回は公式に従い後述の「シェルスクリプトによるインストール」を行います。
$ brew info rye
==> rye: stable 0.11.0 (bottled)
Experimental Package Management Solution for Python

RyeAnExperimentalPackageManagementSolutionforPython
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/rye.rb
License: MIT
==> Dependencies
Build: rust ✘
==> Analytics
install: 140 (30 days), 586 (90 days), 586 (365 days)
install-on-request: 140 (30 days), 586 (90 days), 586 (365 days)
build-error: 2 (30 days)
インストール
rye のインストール手順は Installation に書かれています。 macOS の場合、下記を実行することで Intel / ARM アーキテクチャを見分け、適切なバイナリを自動的にインストールしてくれます。 尚、RYE_INSTALL_OPTION="--yes"
オプションを指定しない場合はインストール前に「続行して良いか?」を対話的に確認される為、y
を入力する必要があります。
curl -sSf https://rye-up.com/get | RYE_INSTALL_OPTION="--yes" bash
今回はバージョン 0.11 がインストールされました。
$ rye --version
rye 0.11.0
commit: 0.11.0 (f6f63d6c1 2023-07-18)
platform: macos (aarch64)
self-python: cpython@3.11
symlink support: true
rye のインストールが完了したらパスを追加しておきます。 bash 環境の場合、例えば以下のように設定を行い、シェルを再起動する等を行い、環境変数の変更を反映しておきます。
echo 'source "$HOME/.rye/env"' >> ~/.bash_profile
rye 自身のアップデート
rye 自身をアップデートするには rye self update
を実行します。
rye self update
基本的な使い方
rye の基本的な利用方法は Basics に記載されています。
プロジェクトディレクトリの作成
rye を利用するにはまず、rye init 〜
を指定してプロジェクトディレクトリを作成します。 プロジェクトディレクトリを作成したら、そのままそのディレクトリへ移動します。
rye init my-project
cd my-project
参考までに、デフォルトでは以下のようなファイル / ディレクトリが自動作成されました。
my-project/
├── .git
│ ├── HEAD
│ ├── config
│ ├── description
│ ├── hooks
│ │ ├── applypatch-msg.sample
│ │ ├── commit-msg.sample
│ │ ├── fsmonitor-watchman.sample
│ │ ├── post-update.sample
│ │ ├── pre-applypatch.sample
│ │ ├── pre-commit.sample
│ │ ├── pre-merge-commit.sample
│ │ ├── pre-push.sample
│ │ ├── pre-rebase.sample
│ │ ├── pre-receive.sample
│ │ ├── prepare-commit-msg.sample
│ │ ├── push-to-checkout.sample
│ │ └── update.sample
│ ├── info
│ │ └── exclude
│ ├── objects
│ │ ├── info
│ │ └── pack
│ └── refs
│ ├── heads
│ └── tags
├── .gitignore
├── .python-version
├── README.md
├── pyproject.toml
└── src
└── my_project
└── __init__.py
Python のバージョン指定
このプロジェクトディレクトリで利用する Python のバージョンは rye pin [VERSION]
で指定します。 実行例は以下の通りです。 指定したバージョンは .python-version
ファイル中に定義されます。 後述しますが、この時点ではまだ Python 本体はインストール (ダウンロード) されません。
$ rye pin 3.10
pinned 3.10.11 in /Users/user/my-project/.python-version
$ cat .python-version
3.10.11
パッケージの追加
本番利用するパッケージは rye add [PACKAGE]
で追加します。 追加されたパッケージは pyproject.toml
ファイル中に定義されます。 以下は flask を追加する実行例です。 後述しますが、この時点ではまだパッケージはインストール (ダウンロード) されません。
$ rye add flask
Added flask>=2.3.2 as regular dependency
例えば black のように「本番環境では利用せず、開発環境でのみ利用する」パッケージは --dev
を指定して追加します。 以下では black を追加する実行例です。 こちらも pyproject.toml
ファイル中に定義されます。
$ rye add --dev black
Added black>=23.7.0 as dev dependency
Python 本体 / パッケージのインストール
指定した Python 本体やパッケージをインストール (ダウンロード) するには rye sync
を実行します。 rye sync
を実行することで自動的に仮想環境 (VirtualEnv) が作成され、指定したファイルが配置されます。
rye sync
rye run
で Python のバージョンを確認してみると今回、指定した 3.10 系がインストールされていることが分かります。
$ rye run python --version
Python 3.10.11
パッケージのアンインストール
インストールしたパッケージをアンインストールするには rye remove [PACKAGE]
を実行します。 これだけでは実際のアンインストールは行われず、その後に rye sync
を実行して初めてパッケージがアンインストールされます。
rye remove flask
rye sync
rye 環境で実行する
rye で用意した環境内で Python を実行するには rye run 〜
を実行します。
$ rye run python hello.py
Initializing new virtualenv in /Users/user/Desktop/my-project/.venv
Python version: cpython@3.11.3
Hello, World!
但し、これでは同じスクリプトを何度も実行するのが面倒です。 このような場合は pyproject.toml
ファイルの [tool.rye.scripts]
セクションへ以下のように追記します (デフォルトではセクション自体が存在しないので、セクション自体を作成します)。 以下では「rye run
で hello
を指定した際、python hello.py
を実行する」という意味になります。
[tool.rye.scripts]
hello = "python hello.py"
実際に rye run hello
を実行すると以下のように意図した実行結果になりました。
$ rye run hello
Hello, World!
pyproject.toml
には様々な設定を行うことが出来、これらのオプションは Python Project にまとめられています。
グローバルにパッケージをインストールする
black のようなツールは「各プロジェクトごと」では無く、システム全体に一度だけインストールし、使い回す方が便利です。
rye install black
rye install [PACKAGE]
によるシステム全体へのインストールはコマンド実行直後に行われます。 その為、rye sync
等を実行する必要はありません。 実際に black をシステム全体にインストールした場合、以下のパスにインストールされました。
$ which black
/Users/user/.rye/shims/black
システム全体にインストールした場合は (rye でインストールしたことを意識せず) そのままインストールしたツールを実行するだけです。
black
参考
rye init
した際に自動作成されるファイルの中身は、今回の環境では以下のようになっていました。
.python-version
cpython@3.11.3
README.md
# my-project
Describe your project here.
pyproject.toml
[project]
name = "my-project"
version = "0.1.0"
description = "Add your description here"
dependencies = []
readme = "README.md"
requires-python = ">= 3.8"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.rye]
managed = true
dev-dependencies = []
[tool.hatch.metadata]
allow-direct-references = true
コメント