36
20

【Python】Ryeで始めるPythonプロジェクト

Posted at

はじめに

PoetryやPipenvではなく、Ryeを使って開発を進めたい方向けの記事になります。
本稿は、ハンズオン形式で誰でも気軽にプロジェクトを作れるようになっています。

ハンズオン環境

  • Ubuntu / MacOS
  • VSCode
  • Rye : 0.24.0

0. Ryeとは?

RyeはPythonのための包括的なプロジェクトおよびパッケージ管理ソリューションです。
使用感としては、Anacondaのように独立してインストールでき、pipenvpoetryのように利用できる良いとこどりのような感じです。

また、大元のAstralは、ruffuv等、今後の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参照していない環境向け)

bashrczprofile・Fish Shellを利用している場合、別途PATHを追加する必要があります。

bash
echo 'source "$HOME/.rye/env"' >> ~/.bashrc
zsh
echo 'source "$HOME/.rye/env"' >> ~/.zprofile
fish
set -Ua fish_user_paths "$HOME/.rye/shims"

1.3. Shellの補完スクリプトを入れる

補完スクリプトも提供されているので、そちらも入れましょう。

bash
mkdir -p ~/.local/share/bash-completion/completions
rye self completion > ~/.local/share/bash-completion/completions/rye.bash
zsh
rye self completion -s zsh > ~/.zfunc/_rye
fish
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.tomlauthorsにGitHubの登録emailアドレスがデフォルトで記載されてしまうため、嫌な人は下記のように変更することをおすすめします。

# 変更前
authors = [
    { name = "kissy24", email = "hogehoge@gmail.com" }
]

# 変更後
authors = [
    { name = "kissy24" }
]

2.2. Ruffを入れる

とりあえずとLinterFormatterは必須なので入れましょう。
Ryeを選ぶ人はRuffも視野にあると思うのでこちらを入れましょう。

rye add ruff

ライブラリを追加したら必ずSyncしましょう。

rye sync

そうすると.venvフォルダとrequirements.lockrequirements-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で自動フォーマットするためには下記の設定を記載する必要があります。

settings.json
{
    "[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パッケージにpytestpytest-covを追加します。
(場合によっては、pytest-mockpytest-freezegunを入れておくと捗ります)

rye add --dev pytest
rye add --dev pytest-cov 
rye sync

おわりに

いかがでしたでしょうか? 従来のPython環境構築は割とめんどくさく環境も汚れがちだったのですが、Ryeを使うと環境をあまり汚さずにエコシステムができあがります。(ruffやuvも使うとなお良い)
今後はAstaral製のものが主流になってくるので、まずは気軽にこんな感じで試してみるのが良いかと思います。

36
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
20