Ответ
Современная экосистема Python использует стандарт pyproject.toml
(PEP 518) для декларативного описания сборки и зависимостей. Основные инструменты делятся на две категории:
-
Билд-системы (Build Systems) Отвечают непосредственно за сборку пакета (sdist, wheel).
- Setuptools: Исторически стандартный и наиболее распространенный бэкенд. Гибкий и мощный.
Пример
pyproject.toml
сsetuptools
:[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "my-library" version = "0.1.0" dependencies = [ "requests >= 2.20.0", ]
-
Инструменты управления проектом (All-in-One Tools) Объединяют управление зависимостями, виртуальными окружениями и сборку.
- Poetry: Популярный инструмент, который обеспечивает детерминированные сборки с помощью файла
poetry.lock
. Упрощает управление зависимостями, сборку и публикацию пакетов. - Hatch: Мощный и расширяемый инструмент, который отлично справляется с управлением окружениями, версиями и сборкой сложных проектов.
- PDM: Современный менеджер пакетов, поддерживающий стандарт PEP 582 (файл
__pypackages__
), что устраняет необходимость вvirtualenv
.
- Poetry: Популярный инструмент, который обеспечивает детерминированные сборки с помощью файла
Рекомендации:
- Для библиотек часто достаточно
setuptools
, так как он обеспечивает максимальную совместимость. - Для приложений
Poetry
илиHatch
являются предпочтительным выбором, так как они предоставляют полный и удобный цикл управления проектом.