これらが含まれます:Pythonは、プロジェクトをパッケージ化して記述するために使用できるツールの混乱の歴史を持ちdistutils
、標準ライブラリではdistribute
、distutils2
とsetuptools
(そしておそらくそれ以上)。と思われdistribute
、distutils2
廃止されたため、setuptools
2つの競合する標準が残っています。
私の理解でsetuptools
は、よりもはるかに多くのオプション(依存関係の宣言、テストなど)が提供されていますdistutils
が、Python標準ライブラリには(まだ?)含まれていません。
Pythonのパッケージングユーザガイド [ 1 ]今お勧めします。
setuptools
プロジェクトを定義し、ソース配布を作成するために使用します。
そして説明します:
pure
distutils
は多くのプロジェクトで使用できますが、他のプロジェクトへの依存関係の定義をサポートしておらず、によって提供されるパッケージメタデータを自動的に正しく入力するためのいくつかの便利なユーティリティがありませんsetuptools
。標準ライブラリの外にあるsetuptoolsは、Pythonの異なるバージョン間でより一貫した機能セットも提供し、(とは異なりdistutils
)setuptools
サポートされているすべてのバージョンで次の「メタデータ2.0」標準形式を生成するように更新されます。を使用することを選択したプロジェクトであっても、
distutils
pipがそのようなプロジェクトを(事前に作成されたwheelファイルからインストールするのではなく)ソースから直接インストールする場合、setuptools
代わりに使用してプロジェクトをビルドします。
ただし、さまざまなプロジェクトのsetup.pyファイルを調べると、これが実際の標準ではないように見えます。多くのパッケージがまだ使用されてdistutils
おり、サポートするパッケージは、たとえばフォールバックインポートを実行することによって、setuptools
しばしば混合されます。setuptools
distutils
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
setuptools
との両方でインストールできるセットアップを作成する方法を見つける試みが続きますdistutils
。distutils
にはセットアップ機能の依存関係がサポートされていないため、多くの場合、エラーが発生しやすい依存関係チェックのさまざまな方法が含まれます。
なぜ人々はまだサポートするために余分な努力をしdistutils
ているのですか- setuptools
標準ライブラリにないことが唯一の理由ですか?だけがサポートするsetup.pyファイルをdistutils
書き込むことの利点と欠点は何ですか。setuptools
setuptools
は拡張された代替手段ですが、distutils
「スクリプト自体がインポートするだけの場合でも、推奨されるpipインストーラーはですべてのsetup.pyスクリプトを実行しますsetuptools
distutils
」(ソース)
distutils
はに統合setuptools
されましたが、使用するように作成されたレガシーアプリがありdistutils
、正しい標準に移行するためにコストがかかります。