Python環境構築 with Rye
導入
macOSにryeをインストールする。
▶ curl -sSf https://rye-up.com/get | bash
ryeのshims
ディレクトリにPATHを通す。shims
はryeの実行ファイル, rye管理の実行ファイルが格納されていて、rye管理のPythonインストールもこのディレクトリ経由で行われる。
......
# 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.10
▶ cat .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.0
▶ cat 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.
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
で行える。