Pythonのパッケージ管理ツールRyeに関するメモ
Ryeを触ってみたので忘れないようにメモしておく。
色々触ったときのリポジトリ
目次
- 目次
- インストール方法
- プロジェクトの作成
- 仮想環境の構築と依存パッケージのインストール
- 仮想環境の有効化
- shims下のpythonコマンドについて(~/.rye/shims/にあるpythonとpython3)
- グローバルなツール
- その他
- 参考リンク
インストール方法
ここに書いてある。 rye-up.com
Linuxなら
# インストール $ curl -sSf https://rye-up.com/get | bash # 環境パス追加 $ echo 'source "$HOME/.rye/env"' >> ~/.bashrc # アップデート rye self update # アンインストール rye self uninstall
env
はシェルスクリプトになっていて、PATHに$HOME/.rye/shims
がなければexport PATH="$HOME/.rye/shims:$PATH
を実行してくれる。
$ cat ~/.rye/env # rye shell setup case ":${PATH}:" in *:"$HOME/.rye/shims":*) ;; *) export PATH="$HOME/.rye/shims:$PATH" ;; esac
なので、$HOME/.rye/shims:$PATH
に実行ファイルがあるそう。
$ ls ~/.rye/shims/
python python3 rye
これでrye
コマンドが使える。
python
とpython3
がshims下にある理由は後述
プロジェクトの作成
# rye_sampleというプロジェクトを作る
$ rye init rye_sample
$ tree rye_sample/
rye_sample/
├── README.md
├── pyproject.toml
└── src
└── rye_sample
└── __init__.py
この他に隠しファイルとして.git
や.gitignore
、.python-version
も生成されている。
重要なのはpyproject.toml
と.python-version
。
pyproject.toml
はPythonのパッケージ情報やRyeのコンフィグレーションが書かれている。
.python-version
は使用するpythonのバージョンが書いてある。
$ cat .python-version cpython-x86_64-linux@3.12.0
この時点では3.12のpythonはインストールされていない。
仮想環境の構築と依存パッケージのインストール
# flaskを依存パッケージに追加 $ rye add flask # blackをdevの依存パッケージに追加 $ rye add --dev black # 仮想環境の構築 $ rye sync # devの依存パッケージを含みたくない場合 $ rye sync --no-dev # パッケージを削除した場合 $ rye remove flask $ rye sync
rye add <package-name>
で依存パッケージの追加をできるが、このコマンドはpyproject.toml
に依存パッケージの記述を追加するだけ。
rye sync
で下記処理が実行される。
.python-version
に書かれているPythonのインストール- 仮想環境の``.venv"フォルダを生成 or 更新
- ロックファイルの生成 or 更新(
requirements.lock
/requirements-dev.lock
)
仮想環境の有効化
# 仮想環境有効化 $ . .venv/bin/activate # 仮想環境無効化 $ deactivate
仮想環境を有効化しなくても、プロジェクト内でpython
と実行すると仮想環境内のPythonを参照してくれる。
shims下のpythonコマンドについて(~/.rye/shims/にあるpythonとpython3)
Ryeをインストール後、~/.rye/shims/
がPATHに追加される。
ここにpython
とpython3
がいる。
よってpython or python3と実行するとシステムにインストールされているpythonではなく、shims下のpythonが実行される。
shims下のpythonコマンドがどう振る舞うかは下記ドキュメントに書かれている。
Inside a Rye managed project they resolve to the Python interpreter of the virtualenv. This means that even if you do not enable the virtualenv, you can just run python in a shell, and it will automatically operate in the right environment.
Ryeのプロジェクト内の場合は、仮想環境を有効化しなくても仮想環境のPythonを起動してくれる。
Outside a Rye managed project it typically resolves to your system Python, though you can also opt to have it resolve to a Rye managed Python installation for you. This is done so that it's not disruptive to your existing workflows which might depend on the System python installation.
Ryeのプロジェクト外の場合は、システムにインストールされているPythonを起動してくれる。 ただし、下記コマンドを実行するとRyeがインストールしたPythonに切り替えることもできるとのこと。
$ rye config --set-bool behavior.global-python=true # 上記コマンドでconfig.tomlが編集される # rye config --show-path でコンフィグの場所が分かる $ cat ~/.rye/config.toml [behavior] global-python = true
違うバージョンのPythonを使いたい場合はインストールが必要
# Pythonをインストール $ rye fetch 3.9 # こっちのコマンドでもインストール可能 $ rye toolchain fetch 3.9 # インストール済みPythonを確認 $ rye toolchain list cpython@3.12.0 (/home/hoge/.rye/py/cpython@3.12.0/install/bin/python3) cpython@3.9.18 (/home/hoge/.rye/py/cpython@3.9.18/install/bin/python3) # インストール済みの特定のバージョンのPythonを使う # このコマンドはRyeのプロジェクト外でしか使えない $ python +3.9 sample.py # インストール済みPythonを削除 $ rye toolchain remove 3.9.18
グローバルなツール
black
はプロジェクトごとではなく、どこでも共通で使えるようにしたい場合、global toolとしてインストールできる。
# global toolとしてblackをインストール $ rye install black # global toolとしてインストールされてもののリストを表示 $ rye tools list black # 削除 $ rye uninstall black
その他
pyproject.tomlの中身の意味はここを見る
ビルドとパブリッシュについてはここを見る
グローバルなコンフィグファイル(config.tomlとか)についてはここを見る
参考リンク
ドキュメント
rye-up.com
デモ動画
www.youtube.com