packaging

setuptoolsの未来

setuptoolsはPythonにおけるライブラリ配布のためのツールとして長らく利用されています。 配布物の作成方法はPEP 517で標準化されpoetryやflitのようなツールが作成されています。 これらのツールはPEP 517に対して開発されてきたためpyproject.tomlでプロジェクトメタデータを記述しています。 しかしsetuptoolsはプロジェクトメタデータをsetup.py, setup.cfgに記述する方法をとっており、これらのファイルがまだ必要となっています。 これらのファイルが必要となる理由といつまで必要となるのか整理しました。 setup.cfg setuptoolsもPEP517に対応しているため以下のようなpyrproject.tomlを記述してwheelを作成できます。 (https://setuptools.readthedocs.io/en/latest/build_meta.html) [build-system] requires = ["wheel", "setuptools"] build-backend = "setuptools.build_meta" このときプロジェクトメタデータはsetup.cfgに記述することになるため、 setup.cfgとpyproject.tomlと設定ファイルが2つ必要になります。 しかしpoetryやflitといったパッケージングツールはpyproject.tomlにプロジェクトメタデータを記述するようになっています。 これらのツールもメタデータの記述方法はそれぞれ独自に決めているため細かな才があります。 とはいえ最終的には同じメタデータを生成するための情報なのでメタデータをpyroject.tomlに書くためのスキーマを定義するPEPが提案されています。 pyproject.tomlにプロジェクトメタデータを記述するためのPEP PEP 621 – Storing project metadata in pyproject.toml PEP 631 – Dependency specification in pyproject.toml based on PEP 508 setup.py wheelを作成するにはsetup.pyは必要ありません。 しかし、setuptoolsの単体で依存ライブラリをインストールする機能である develop コマンドや editable install には setup.py が必要になります。 この場合、ただ setup 関数を呼ぶだけの setup.py を作成することになります。 from setuptools import setup setup() pipのinstallコマンドで --editable (-e) オプションをつけるとeditableインストールとなります。