Python のパッケージ管理を rye で行う
Python のパッケージ管理ツールは幾つかあります。 Armin Ronacher さんが開発した rye が使いやすかったのでインストールや基本的な利用手順をメモしておきます。 Armin Ronacher さんは rye の他に flask や jinja、click 等を開発されているそうです。 また、rye が初めて公開されたのは 2023 年 5 月だそうです。 今回は macOS 13.4.1 で検証しました。
余談¶
macOS であれば rye を homebrew からインストールすることも可能なようです。 但し、公式ページでは homebrew によるインストール手順をガイドしておらず、シェルスクリプトでのインストール手順がガイドされている為、今回は公式に従い後述の「シェルスクリプトによるインストール」を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
インストール¶
rye のインストール手順は Installation に書かれています。 macOS の場合、下記を実行することで Intel / ARM アーキテクチャを見分け、適切なバイナリを自動的にインストールしてくれます。 尚、RYE_INSTALL_OPTION="--yes"
オプションを指定しない場合はインストール前に「続行して良いか?」を対話的に確認される為、y
を入力する必要があります。
1 |
|
今回はバージョン 0.11 がインストールされました。
1 2 3 4 5 6 |
|
rye のインストールが完了したらパスを追加しておきます。 bash 環境の場合、例えば以下のように設定を行い、シェルを再起動する等を行い、環境変数の変更を反映しておきます。
1 |
|
rye 自身のアップデート¶
rye 自身をアップデートするには rye self update
を実行します。
1 |
|
基本的な使い方¶
rye の基本的な利用方法は Basics に記載されています。
プロジェクトディレクトリの作成¶
rye を利用するにはまず、rye init 〜
を指定してプロジェクトディレクトリを作成します。 プロジェクトディレクトリを作成したら、そのままそのディレクトリへ移動します。
1 2 |
|
参考までに、デフォルトでは以下のようなファイル / ディレクトリが自動作成されました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
Python のバージョン指定¶
このプロジェクトディレクトリで利用する Python のバージョンは rye pin [VERSION]
で指定します。 実行例は以下の通りです。 指定したバージョンは .python-version
ファイル中に定義されます。 後述しますが、この時点ではまだ Python 本体はインストール (ダウンロード) されません。
1 2 3 4 |
|
パッケージの追加¶
本番利用するパッケージは rye add [PACKAGE]
で追加します。 追加されたパッケージは pyproject.toml
ファイル中に定義されます。 以下は flask を追加する実行例です。 後述しますが、この時点ではまだパッケージはインストール (ダウンロード) されません。
1 2 |
|
例えば black のように「本番環境では利用せず、開発環境でのみ利用する」パッケージは --dev
を指定して追加します。 以下では black を追加する実行例です。 こちらも pyproject.toml
ファイル中に定義されます。
1 2 |
|
Python 本体 / パッケージのインストール¶
指定した Python 本体やパッケージをインストール (ダウンロード) するには rye sync
を実行します。 rye sync
を実行することで自動的に仮想環境 (VirtualEnv) が作成され、指定したファイルが配置されます。
1 |
|
rye run
で Python のバージョンを確認してみると今回、指定した 3.10 系がインストールされていることが分かります。
1 2 |
|
パッケージのアンインストール¶
インストールしたパッケージをアンインストールするには rye remove [PACKAGE]
を実行します。 これだけでは実際のアンインストールは行われず、その後に rye sync
を実行して初めてパッケージがアンインストールされます。
1 2 |
|
rye 環境で実行する¶
rye で用意した環境内で Python を実行するには rye run 〜
を実行します。
1 2 3 4 |
|
但し、これでは同じスクリプトを何度も実行するのが面倒です。 このような場合は pyproject.toml
ファイルの [tool.rye.scripts]
セクションへ以下のように追記します (デフォルトではセクション自体が存在しないので、セクション自体を作成します)。 以下では「rye run
で hello
を指定した際、python hello.py
を実行する」という意味になります。
1 2 |
|
実際に rye run hello
を実行すると以下のように意図した実行結果になりました。
1 2 |
|
pyproject.toml
には様々な設定を行うことが出来、これらのオプションは Python Project にまとめられています。
グローバルにパッケージをインストールする¶
black のようなツールは「各プロジェクトごと」では無く、システム全体に一度だけインストールし、使い回す方が便利です。
1 |
|
rye install [PACKAGE]
によるシステム全体へのインストールはコマンド実行直後に行われます。 その為、rye sync
等を実行する必要はありません。 実際に black をシステム全体にインストールした場合、以下のパスにインストールされました。
1 2 |
|
システム全体にインストールした場合は (rye でインストールしたことを意識せず) そのままインストールしたツールを実行するだけです。
1 |
|
参考¶
rye init
した際に自動作成されるファイルの中身は、今回の環境では以下のようになっていました。
.python-version¶
1 |
|
README.md¶
1 2 3 |
|
pyproject.toml¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|