Open2

Python環境構築 with Rye

mitk232mitk232

https://rye-up.com/

導入

macOSにryeをインストールする。

curl -sSf https://rye-up.com/get | bash

ryeのshimsディレクトリにPATHを通す。shimsはryeの実行ファイル, rye管理の実行ファイルが格納されていて、rye管理のPythonインストールもこのディレクトリ経由で行われる。

~/.zshrc
......
# add rye shims folder into PATH
source "$HOME/.rye/env"
......

rye自体の操作

  • rye self update: ryeのアップデート
  • rye self uninstall: ryeのアンインストール

ryeによるPythonプロジェクト作成

▶ rye init <project>cd <project>
▶ tree
.
├── .git
├── .gitignore
├── .python-version
├── README.md
├── pyproject.toml
└── src
    └── my_project
        └── __init__.py

3 directories, 3 files
  • pyproject.toml: Pythonプロジェクトメタデータ
  • .python-version: Pythonバージョン

ryeを用いてPythonバージョンを指定する。

▶ rye pin 3.10cat .python-version
3.10.11

ryeを用いてPython仮想環境を作成する。

▶ rye sync
▶ tree .
.
├── .git
├── .gitignore
├── .python-version
├── .venv
├── README.md
├── pyproject.toml
├── requirements-dev.lock
├── requirements.lock
└── src
    └── rye_project
        └── __init__.py
▶ ls ~/.rye/py
cpython@3.10.11  cpython@3.11.3

rye syncを実行すると、.venvディレクトリが生成され、Python仮想環境が作成される。生成された.venvは以降のsync実行時に利用される。
Pythonバージョンを指定した上で、rye syncを初めて実行した際には、指定したバージョンのCPythonインタプリタも同時にインストールされる。これは~/.rye/py以下で確認可能。
ryeが管理するプロジェクト内では、pythonと打つだけで仮想環境を自動で検知し、ryeで指定したCPythonインタプリタが起動される。

▶ python
Python 3.10.11 (main, May  7 2023, 17:32:05) [Clang 16.0.3 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

パッケージ管理

rye add <package>によってパッケージを追加する。

▶ rye add "flask>=2.0"
Added flask>=2.0 as regular dependency
▶ cat pyproject.toml
[project]
...
dependencies = [
    "flask>=2.0",
]
...

pyproject.tomlに依存関係が追加されるが、実際にインストールするためにはrye syncが必要。
rye removeで依存関係の削除ができる。

▶ rye remove flask
Removed flask>=2.0cat pyproject.toml
[project]
...
dependencies = [
]
...

パッケージを追加し、コマンドを実行したい場合はrye run <command>で実行ができる。なお、rye add時に--devオプションを追加することで、開発時のみの依存関係を指定することができる。

▶ rye add --dev black
Added black>=23.7.0 as dev dependency
▶ rye sync
Reusing already existing virtualenv
...
▶ rye run black .
All done! ✨ 🍰 ✨
1 file left unchanged.
mitk232mitk232

https://rye-up.com/guide/shims/

Shims

先述の通り、ryeが管理するPythonプロジェクト内ではインタプリタ起動時にpythonコマンドを打つだけで、rye指定のバージョンが起動した。一方で、rye管理のPythonプロジェクト外で、単にpythonと打った場合、基本的にシステムにインストールしたPythonによって解決される。

rye 0.9.0からはryeによってglobal環境でのPythonインタプリタのバージョンも解決することができる。そのためには~/.rye/以下のconfig.tomlファイルでglobal-pythonフラグをセットする。これはrye configコマンドで実行可能。ryeをインストールした段階ではconfig.tomlファイルは存在しないが、rye configコマンドを実行すると自動的に作成される。

▶ rye config --set-bool behavior.global-python=true
▶ cat ~/.rye/config.toml
[behavior]
global-python = true
▶ python
Python 3.11.3 (main, May  7 2023, 17:43:38) [Clang 16.0.3 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

global環境でPythonバージョンを切り替えたい場合、当該バージョンのPythonを事前にインストールしておけば、次のようにpythonコマンドを実行することでryeが解決してくれる。

python +3.10

新たにプロジェクトを作成せずにPythonバージョンを追加したい場合、rye fetchを使って直接CPythonインタプリタをインストールする。

▶ rye fetch cpython@3.8
Downloading cpython@3.8.16
Checking checksum
success: Downloaded cpython@3.8.16

▶ ls -1 ~/.rye/py
cpython@3.8.16 
cpython@3.10.11
cpython@3.11.3

▶ python +3.8
Python 3.8.16 (default, May  7 2023, 17:17:46)
[Clang 16.0.3 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

global環境へのパッケージインストール

rye installコマンドによってglobalにパッケージをインストールできる。blackやflake8などをシステムに一括でダウンロードできるので便利。

▶ rye install black
▶ rye install flake8
▶ rye install isort

globalにインストールしたパッケージはrye tools listで確認できる。

▶ rye tools list
black
flake8
isort

なおアンインストールはrye uninstallで行える。