用語集 最終更新 2026.08.10

pyproject.toml

pyproject.toml は、Python プロジェクトの設定を1か所にまとめるための標準ファイルです。 依存関係、パッケージのメタ情報、各種ツールの設定を、TOML 形式で記述します。

何がまとまったのか

かつては役割ごとにファイルが分かれていました。

setup.py / setup.cfg pyproject.toml の [project]
requirements.txt [project]dependencies
.flake8 / pytest.ini など [tool.<ツール名>]

ツールごとの設定が [tool.black] [tool.ruff] のように名前空間で分かれているのがポイントです。ツールが増えても衝突しません。

依存はここ、固定はロックファイル

役割を混同しないでください。pyproject.toml に書くのは自分が直接使うライブラリと、許容するバージョンの範囲です。

dependencies = ["requests>=2.31", "fastapi>=0.110"]

実際に入った版の組み合わせを記録するのはロックファイルの役目です。piprequirements.txtpip freeze で作っていた頃と違い、直接依存と間接依存が混ざりません

なお 2025年3月に PEP 751 が Final となり pylock.toml が共通のロックファイル形式として標準化されています。設定は pyproject.toml、固定は pylock.toml、という分担が今後の標準形です。

TOML なので YAML の罠が無い

YAML と違い、TOML はインデントに意味がなく、型の推測もしません。文字列は必ず引用符で囲むため、1.101.1 になったり no が偽になったりしません。設定ファイル形式としては素直で、事故が起きにくい選択です。

実務で見るポイント

  • Poetry / uv はこのファイルを前提に動く。新規プロジェクトでは最初に作る
  • 古い記事の setup.py 前提の手順は、そのままでは通らないことがある
  • 開発用の依存(テスト・整形)は本番の依存と分けて書ける。本番イメージを軽くできる