追記 : uvの記事も一緒に見ていただければと思います。
はじめに
PoetryやPipenvではなく、Ryeを使って開発を進めたい方向けの記事になります。
本稿は、ハンズオン形式で誰でも気軽にプロジェクトを作れるようになっています。
ハンズオン環境
- Ubuntu / MacOS
- VSCode
- Rye : 0.24.0
0. Ryeとは?
RyeはPythonのための包括的なプロジェクトおよびパッケージ管理ソリューションです。
使用感としては、Anaconda
のように独立してインストールでき、pipenv
やpoetry
のように利用できる良いとこどりのような感じです。
また、大元のAstralは、ruff
やuv
等、今後のPython実行環境を刷新するようなパッケージを多数生み出しているため、Rye
含めAstaral製のエコシステムが主流になっていくのかなと思います。
(ちなみにどれもRust実装で軽快に動いてくれます)
1. インストール編
基本的には、公式の誘導に従います。
(Windowsへのインストールは本稿では扱わないので公式見てね)
1.1. ダウンロードする
まず、curlコマンドを実行しましょう。適したバイナリファイルが落ちてきます。
curl -sSf https://rye-up.com/get | bash
下記は対話ログです。
This script will automatically download and install rye (latest) for you.
######################################################################## 100.0%
Welcome to Rye!
This installer will install rye to /home/kissy24/.rye
This path can be changed by exporting the RYE_HOME environment variable.
Details:
Rye Version: 0.24.0
Platform: linux (x86_64)
✔ Continue? · yes
✔ Select the preferred package installer · uv (quick but experimental)
✔ Determine Rye's python Shim behavior outside of Rye managed projects · Make Rye's own Python distribution available
✔ Which version of Python should be used as default toolchain? · cpython@3.12
Installed binary to /home/kissy24/.rye/shims/rye
Bootstrapping rye internals
Downloading cpython@3.12.1
Checking checksum
success: Downloaded cpython@3.12.1
Upgrading pip
Installing internal dependencies
Updated self-python installation at /home/kissy24/.rye/self
The rye directory /home/kissy24/.rye/shims was not detected on PATH.
It is highly recommended that you add it.
✔ Should the installer add Rye to PATH via .profile? · yes
Added to PATH.
note: for this to take effect you will need to restart your shell or run this manually:
source "$HOME/.rye/env"
For more information read https://mitsuhiko.github.io/rye/guide/installation
All done!
対話型で進行します。内容について簡単に説明すると
質問 | 返答 |
---|---|
1. 入れるRyeのバイナリは問題ないか | yes |
2. パッケージ・インストーラーを選択してください | uv (quick but experimental) |
3. RyeでPythonを管理するか | Make Rye's own Python distribution available |
4. どのPythonバージョンをデフォルトにするか | Enterで推奨バージョンが入ります |
5. RyeのPATHを.profile に追加するか |
yes |
開発シーンにあわせて、pipや管理方法などを選びましょう。今回はこれで進めます。
1.2. PATHを通す(.profile参照していない環境向け)
bashrc
やzprofile
・Fish Shellを利用している場合、別途PATHを追加する必要があります。
echo 'source "$HOME/.rye/env"' >> ~/.bashrc
echo 'source "$HOME/.rye/env"' >> ~/.zprofile
set -Ua fish_user_paths "$HOME/.rye/shims"
1.3. Shellの補完スクリプトを入れる
補完スクリプトも提供されているので、そちらも入れましょう。
mkdir -p ~/.local/share/bash-completion/completions
rye self completion > ~/.local/share/bash-completion/completions/rye.bash
rye self completion -s zsh > ~/.zfunc/_rye
rye self completion -s fish > ~/.config/fish/completions/rye.fish
1.3. Rye自体をアップデートする
最後にRye自体をアップデートします。
rye self update
2. 新規プロジェクト作成編
2.1. プロジェクトを作成する
rye init
を用いてプロジェクトを作成していきます。
rye init rye-sample-project
cd rye-sample-project
既にプロジェクトのフォルダがある場合は、下記でOKです。
cd rye-sample-project
rye init
そうすると以下のようなフォルダ構成が出来上がります。
.
├── .git
├── .gitignore
├── .python-version
├── README.md
├── pyproject.toml
└── src
└── my_project
└── __init__.py
注意点
pyproject.toml
のauthors
にGitHubの登録emailアドレスがデフォルトで記載されてしまうため、嫌な人は下記のように変更することをおすすめします。
# 変更前
authors = [
{ name = "kissy24", email = "hogehoge@gmail.com" }
]
# 変更後
authors = [
{ name = "kissy24" }
]
2.2. Ruffを入れる
とりあえずとLinter
とFormatter
は必須なので入れましょう。
Ryeを選ぶ人はRuffも視野にあると思うのでこちらを入れましょう。
rye add ruff
ライブラリを追加したら必ずSyncしましょう。
rye sync
そうすると.venv
フォルダとrequirements.lock
、requirements-dev.lock
が生成されます。
lock側には入れているライブラリの一覧が入り、venv側にパッケージそのものが入ります。
Tips
pipenvだと作業ディレクトリ上に.venv
フォルダを生成するには下記オプションがいるのですが、ryeはデフォルトで作ってくれます。
PIPENV_VENV_IN_PROJECT=true
おっと、ruffは開発でしか必要の無いライブラリでしたね。
こういうときはdevパッケージとしてインストールしましょう。
# 一旦ruffを削除します
rye remove ruff
# devパッケージとしていれます
rye add --dev ruff
rye sync
Tips
こうすると、requirements-dev.lock
にのみ、ruffが記載されていると思います。
このプロジェクトを実行用途のみで使う場合は下記のようにsync
してください。
rye sync --no-dev
.venv
上にruffのパッケージが含まれていなければ成功です。
2.3. hello worldする
最後に、hello worldしてみましょう。
>>> rye run hello
Hello from rye-sample-project!
ryeで無事プロジェクトを作ることができました。ここからは自由に開発していくと良いでしょう。
ここまでが、ハンズオンになります。
下記に、ハンズオンのコードを置いてますのでよければ確認してみてください。
3. おまけ
VSCodeでruffを使う場合の設定とpytestの導入方法を紹介します。
3.1. VSCodeのruff設定を追加する
VSCodeユーザーは必ずこれを入れましょう。
ruff
で自動フォーマットするためには下記の設定を記載する必要があります。
{
"[python]": {
"editor.codeActionsOnSave": {
"source.fixAll.ruff": "explicit",
"source.organizeImports.ruff": "explicit"
}
}
}
今回はこれをプロジェクトフォルダ内に定義します。そうすると、複数人で作業する際にフォーマットすることを強制できます。
.
├── .vscode
| └── settings.json
├── .git
├── .gitignore
├── .python-version
├── README.md
├── pyproject.toml
└── src
└── my_project
└── __init__.py
3.2. pytestを導入する
devパッケージにpytest
とpytest-cov
を追加します。
(場合によっては、pytest-mock
とpytest-freezegun
を入れておくと捗ります)
rye add --dev pytest
rye add --dev pytest-cov
rye sync
おわりに
いかがでしたでしょうか? 従来のPython環境構築は割とめんどくさく環境も汚れがちだったのですが、Rye
を使うと環境をあまり汚さずにエコシステムができあがります。(ruffやuvも使うとなお良い)
今後はAstaral製のものが主流になってくるので、まずは気軽にこんな感じで試してみるのが良いかと思います。