PoetryからRyeへの移行と、Netlifyビルドの完全対応#
Poetryで管理していたPythonプロジェクトを、最近注目されているRyeに移行し、 さらにNetlifyでのデプロイまでを通して構成を整えた。この記事では、その手順と要点を記録しておく。
移行にあたり、以下のポイントを押さえて対応した:
既存のPoetryプロジェクトからの安全な移行
pre-commitによるRuff設定の見直し
RyeバイナリのNetlify上でのインストールと実行
Pythonバージョンによる依存解決失敗の原因と対策
pipとの切り分け(requirements.txt方式の回避)
移行前の状態#
Poetryで管理(
pyproject.toml
,poetry.lock
あり).venv/
,setup.py
,poetry.toml
なども存在Netlifyでは、
requirements.txt
とpip install
によるビルド運用
Ryeへの移行手順#
現状をタグでバックアップ:
git tag before-rye
Poetry関連のファイル削除:
rm poetry.lock poetry.toml setup.py rm -rf .venv/
setup.py
を一時退避してrye init
:mv setup.py setup.py.bak rye init
必要パッケージのインストール:
rye add sphinx pydata-sphinx-theme myst-parser
開発パッケージのインストール:
rye add --dev sphinx-autobuild doc8 esbonio rstcheck pre-commit doit ruff
Pythonバージョンを明示:
echo "3.12.9" > .python-version
pyproject.toml
をRye形式に手動で修正し、Ruffの設定も正規化:[tool.ruff] line-length = 120 extend-select = ["I", "C901"] [tool.ruff.lint.mccabe] max-complexity = 10
requires-python
の条件を修正:requires-python = ">=3.12"
Netlifyでの対応#
Ryeの公式インストールスクリプトは curl | bash
形式だが、Netlifyでは curl -sSf https://rye.astral.sh/get | bash
の方式でエラーとなったので、代わりにRyeバイナリをダウンロードして展開する方式を採用した。
[build]
command = """
wget -q https://github.com/astral-sh/rye/releases/latest/download/rye-x86_64-linux.gz
gunzip rye-x86_64-linux.gz
chmod +x rye-x86_64-linux
./rye-x86_64-linux self install --yes
. $HOME/.rye/env
rye sync
rye run doit doc
"""
publish = "docs/_build/html"
[build.environment]
PYTHON_VERSION = "3.13"
LANG = "ja_JP.UTF-8"
LANGUAGE = "ja_JP:ja"
LC_ALL = "ja_JP.UTF-8"
TZ = "Asia/Tokyo"
トラブルと対策まとめ#
poetry時代の
pyproject.toml
が残っているとあると rye init が失敗する → 削除するsetup.py
があると rye init が失敗する → 一時退避すればOKpyproject.toml
にrequires-python = ">=3.8"
があると、Ryeが3.8を使ってしまう →">=3.12"
に修正max-complexity
の設定が間違っているとRuffでエラー →[tool.ruff.lint.mccabe]
に正しく記載
まとめ#
Ryeは開発者体験が非常に良い一方で、NetlifyのようなCI環境での対応には少し工夫が必要だった。 移行はやり切れた。poetryとの違い、性能メリットを感じることもできた。今後はryeを基点にした開発にシフトしノウハウを蓄積したい。
記事情報
- 著者:
mtakagishi
- 公開日:
2025-05-31