Какие инструменты используются для сборки и управления зависимостями в Python?

Ответ

Современная экосистема Python использует стандарт pyproject.toml (PEP 518) для декларативного описания сборки и зависимостей. Основные инструменты делятся на две категории:

  1. Билд-системы (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",
    ]
  2. Инструменты управления проектом (All-in-One Tools) Объединяют управление зависимостями, виртуальными окружениями и сборку.

    • Poetry: Популярный инструмент, который обеспечивает детерминированные сборки с помощью файла poetry.lock. Упрощает управление зависимостями, сборку и публикацию пакетов.
    • Hatch: Мощный и расширяемый инструмент, который отлично справляется с управлением окружениями, версиями и сборкой сложных проектов.
    • PDM: Современный менеджер пакетов, поддерживающий стандарт PEP 582 (файл __pypackages__), что устраняет необходимость в virtualenv.

Рекомендации:

  • Для библиотек часто достаточно setuptools, так как он обеспечивает максимальную совместимость.
  • Для приложений Poetry или Hatch являются предпочтительным выбором, так как они предоставляют полный и удобный цикл управления проектом.