【Python】pyproject.toml, setup.py, tox.iniの見方(参画当初)

この記事は約3分で読めます。

プロジェクト直下に、pyproject.toml, setup.py, tox.iniがあるときに、これらのファイルをどのように見ていけば良いのか、メモします。

結論から言うと、読み解く順番は以下の通りです。

  1. pyproject.toml (まずはここを見る。現代の「正解」が書いてあるか確認)

  2. setup.py (tomlに情報がなければ、ここが「真の正解」)

  3. tox.ini (最後に、動かし方を確認)


1. pyproject.toml: プロジェクトの「今」を知る

役割: 現代の標準的な設定ファイル。

確認ポイント: 「このファイルが『主役』か『脇役』か?」を見極めます。

ファイルを開いて、以下のセクションがあるか探してみます。

Aパターン: [project] セクションがある場合

→ こちらが「主役(正解)」です。

ここに dependencies(依存ライブラリ)や scripts(エントリーポイント)が書かれています。

この場合、同階層にある setup.py は、古いツールとの互換性のために残されているだけの「抜け殻」に近い可能性が高いです。情報は pyproject.toml を信じます。

Bパターン: [tool.xxx] セクションしかない場合

→ こちらは「脇役(ツール設定用)」です。

[tool.ruff][tool.pytest.ini_options] など、ツールごとの設定しか書かれていない場合です。

この場合、依存ライブラリやプロジェクト定義の正解は setup.py にあります。 次へ進んでください。


2. setup.py: プロジェクトの「実体」を知る

役割: パッケージ化のロジック。

確認ポイント: pyproject.toml が「脇役」だった場合、こちらを「仕様書」として読みます。

  • install_requires=[...]: これが真の依存ライブラリ一覧です。

  • entry_points={...}: これがコマンドの入り口です。

【補足知識】 なぜ両方あるの?

pyproject.toml に移行したいけれど、完全に移行しきれていない(あるいは pip install -e . という開発モードインストールの互換性維持のため)という理由で、両方置いているプロジェクトは非常に多いようです。

「両方あるときは、内容が重複しているか、片方が片方を参照している」と考えます。


3. tox.ini: プロジェクトの「手順」を知る

役割: タスクランナー / テスト設定。

確認ポイント: 構成や依存関係を理解したに見ます。

上記2つで「プロジェクトの構造」は分かりました。

tox.ini は「で、どうやってテスト回すの?」「Lintはどう実行するの?」という手順書として読みます。


まとめ: 脳内フローチャート

この3ファイルが並んでいたら、以下のフローで判断していくと良いです。

コード スニペット

タイトルとURLをコピーしました