setuptools против distutils: почему distutils все еще существует?

Python имеет запутанную историю инструментов, которые можно использовать для упаковки и описания проектов:distutils в стандартной библиотеке,distribute, distutils2, а такжеsetuptools (а может и больше). Похоже, чтоdistribute а такжеdistutils2 были прекращены в пользуsetuptools, который оставляет два конкурирующих стандарта.

Насколько я понимаюsetuptools предлагает гораздо больше вариантов (например, объявление зависимостей, тестов и т. д.), чемdistutilsоднако он не включен в стандартную библиотеку Python (пока?).

Python Packaging Руководство пользователя[1] рекомендует сейчас:

использованиеsetuptools определять проекты и создавать исходные дистрибутивы.

И объясняет:

Хотя вы можете использовать чистый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 не в стандартной библиотеке единственная причина? Каковы преимуществаdistutils и есть ли недостатки написанияsetup.py файлы, которые поддерживают толькоsetuptools.

Ответы на вопрос(4)

Ваш ответ на вопрос