Closed5

Rye & uv 時代の Python プロジェクト管理系ツールまとめ

まちゅけんまちゅけん

Rye & uv が登場して混沌としていた Python のプロジェクト管理系ツールが一蹴されそうな感じがしてます。

https://github.com/astral-sh/rye
https://github.com/astral-sh/uv

ただし Rye 単体では「個人的な」要件を「完全には」満たせないので、今一度 Rye & uv 時代のプロジェクト管理ツールをまとめてみます。

ちなみに「Rye & uv 時代以前」のプロジェクト管理系ツールまとめはこちらの記事たちが大変分かりやすいです。

https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packaging/

https://vaaaaaanquish.hatenablog.com/entry/2021/03/29/221715

まちゅけんまちゅけん

やりたいこと

これは独断と偏見です

  • MUST (絶対必要な機能)
    • pyproject.toml[project] テーブルに準拠している (PEP 518 と PEP 621)
    • ローカルでの複数 Python バージョンのテスト実行
  • POSSIBLE (出来れば欲しい機能)
    • uv による仮想環境管理バックエンド
  • MAY (あってもいい機能)

満たされていること

  • テスト
    • pytest で充分だと思っています
  • リント & フォーマット
    • ruff で充分だと思っています
まちゅけんまちゅけん

パッケージング系

PEP 518 & PEP 621 Test runner uv python-build-standalone Lockfile
pipenv
poetry [1] [2]
hatch 🔜 [3] 🤔 [4]
pdm 🧐 [5]
rye

複数 Python バージョンのテスト実行 (Test runner の欄) はテストランナー系フレームワークと組み合わせることで解決できます。

テストランナー系

uv
tox
nox
脚注
  1. https://github.com/python-poetry/roadmap/issues/3 ↩︎

  2. https://github.com/python-poetry/poetry/issues/8978 ↩︎

  3. https://github.com/pypa/hatch/issues/1268 ↩︎

  4. https://github.com/pypa/hatch/issues/749#issuecomment-1804903619 ↩︎

  5. https://github.com/pdm-project/pdm/issues/2693 ↩︎

まちゅけんまちゅけん

ライブラリ開発

ライブラリ開発なら Hatch で良さそうです。

今現在は uv は対応してないですが Issue を見る限りメンテナは前向きなのでその内対応するでしょう。 ロックファイルはデフォルトサポートは見えなさそうですが、プラグインなら対応できそうです。 テストランナー自体も Hatch で簡潔してしまうのは魅力的です!

OSS として世に公開するのはライブラリが多いのでこれからは Hatch にお世話になると思います。 uv サポートが待ち遠しいです 😊

アプリケーション開発

アプリケーション開発ならデフォルトサポートのロックファイルが欲しいです。

  • uv をデフォルトサポートする Rye
  • tox or nox との親和性が高そう [1]PDM

PDM は uv サポートはまだなさそうなので、それを使いたいなら Rye になるでしょう。 ただ Rye の管理する Python インタプリタを tox or nox に伝えるには現時点ではちょっとしたハックが必要そう [2] です。 それが面倒に思うなら uv は使えないですが適切なテストランナーサポートが得られる PDM を利用するのが良さそうです。

脚注
  1. https://pdm-project.org/en/latest/usage/advanced/#automatic-testing ↩︎

  2. https://github.com/astral-sh/rye/issues/206 ↩︎

このスクラップは1ヶ月前にクローズされました