Какой менеджер зависимостей рекомендуется использовать в Python-проектах?

Ответ

Для проектов на Python часто рекомендуется использовать Poetry — современный инструмент для управления зависимостями. Он объединяет управление пакетами, виртуальными окружениями и публикацией в одном инструменте, обеспечивая более надежное и воспроизводимое управление зависимостями.

Почему Poetry? Poetry помогает избежать проблем с конфликтами зависимостей и обеспечивает детерминированную установку пакетов благодаря файлу poetry.lock.

Пример pyproject.toml:

[tool.poetry]
name = "my_project"
version = "0.1.0"
description = "Awesome project"
authors = ["Your Name <you@example.com>"]

[tool.poetry.dependencies]
python = "^3.8"
requests = "^2.25.1"
pandas = "^1.3.0"

[tool.poetry.dev-dependencies]
pytest = "^6.2.4"
black = "^21.7b0"

Основные преимущества Poetry:

  • Изоляция окружений: Автоматическое создание и управление виртуальными окружениями.
  • Детерминизм: Блокировка версий всех зависимостей через poetry.lock для воспроизводимых сборок.
  • Разделение зависимостей: Четкое разделение зависимостей для разработки (dev-dependencies) и продакшена.
  • Удобство публикации: Упрощенный процесс публикации пакетов в PyPI.

Альтернативы:

  • pip + venv (базовый подход)
  • pipenv (еще один инструмент для управления зависимостями и окружениями)