Что такое Poetry и для чего он используется в Python-проектах

Ответ

Poetry — это современный инструмент для управления зависимостями и пакетами в Python, который призван унифицировать и упростить процессы, ранее требовавшие использования pip, virtualenv, setuptools и файла requirements.txt.

Основная цель Poetry — обеспечить детерминированность сборок и упростить управление проектом на всех его этапах.

Ключевые возможности:

  • Декларативное управление зависимостями: Все зависимости проекта и его метаданные (имя, версия, авторы) описываются в одном файле pyproject.toml.
  • Изоляция окружений: Poetry автоматически создает и управляет виртуальными окружениями для каждого проекта, гарантируя отсутствие конфликтов между зависимостями разных проектов.
  • Детерминированные сборки: Файл poetry.lock фиксирует точные версии всех зависимостей (включая транзитивные), что гарантирует, что проект будет работать одинаково на любой машине.
  • Сборка и публикация: Встроенные команды для сборки проекта в дистрибутивы (wheel, sdist) и их публикации на PyPI.

Пример рабочего процесса:

# Создать новый проект с базовой структурой
poetry new my-awesome-project
cd my-awesome-project

# Добавить новую зависимость в проект
# Poetry автоматически найдет подходящую версию и добавит ее в pyproject.toml и poetry.lock
poetry add requests

# Установить все зависимости из poetry.lock
poetry install

# Запустить скрипт внутри виртуального окружения проекта
poetry run python my_awesome_project/main.py