Ответ
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