Ответ
Poetry — это инструмент для Python, который унифицирует управление зависимостями, сборку пакетов и работу с виртуальными окружениями. Он призван заменить связку pip, venv, requirements.txt и setup.py единым и предсказуемым рабочим процессом.
Ключевые задачи, которые решает Poetry:
-
Декларативное управление зависимостями:
- Все зависимости проекта (основные и для разработки) объявляются в одном файле —
pyproject.toml. - Это заменяет
requirements.txtиdev-requirements.txt.
- Все зависимости проекта (основные и для разработки) объявляются в одном файле —
-
Детерминированная установка:
- Poetry создает файл
poetry.lock, который фиксирует точные версии всех зависимостей и их транзитивных зависимостей. - Это гарантирует, что окружение будет идентичным на любой машине, решая проблему "у меня работает, а у тебя нет".
- Poetry создает файл
-
Изоляция окружения:
- Автоматически создает и управляет виртуальным окружением для проекта, избавляя от необходимости вручную активировать
venv.
- Автоматически создает и управляет виртуальным окружением для проекта, избавляя от необходимости вручную активировать
-
Сборка и публикация пакетов:
- Позволяет легко собирать проект в форматы
sdistиwheelи публиковать его на PyPI с помощью простых команд.
- Позволяет легко собирать проект в форматы
Пример рабочего процесса:
# 1. Создать новый проект
poetry new my-awesome-project
cd my-awesome-project
# 2. Добавить зависимость (например, requests)
# Poetry автоматически найдет подходящую версию и добавит ее в pyproject.toml и poetry.lock
poetry add requests
# 3. Установить все зависимости из lock-файла
poetry install
# 4. Запустить скрипт в виртуальном окружении проекта
poetry run python my_awesome_project/main.py
Основные преимущества перед pip + venv:
- Надежное разрешение зависимостей: Poetry использует продвинутый алгоритм для разрешения конфликтов версий, в то время как
pipможет устанавливать несовместимые пакеты. - Воспроизводимость сборок:
poetry.lockгарантирует, что у всех разработчиков и на сервере будет одинаковый набор пакетов. - Единый инструмент: Объединяет функциональность нескольких утилит в одном удобном интерфейсе.
Ответ 18+ 🔞
А, Poetry! Ну, это такая штука, которая пришла, чтобы навести порядок в этом бардаке, который мы называем "питонячий проект". Представь: у тебя есть pip, venv, requirements.txt, setup.py — и всё это живёт своей жизнью, как тараканы под плинтусом. А потом приходит этот Poetry и говорит: "Так, хули тут у вас? Разберитесь нахуй!"
Короче, зачем он нужен, этот ёперный театр:
-
Чтоб не писать эти ебучие
requirements.txtвручную. Всё в одном файле —pyproject.toml. И для прода, и для разработки. Красота, а не жизнь. -
Чтоб у всех всё срало одинаково. Он создаёт файл
poetry.lock, который фиксирует ВСЁ до последней запятой. Больше никаких "ой, а у меня работает". Не работает? Да потому что у тебя, пизда бородавчатая, версия другая! А сlock-файлом — всё как у всех. Детерминизм, блядь! -
Чтоб не париться с виртуальными окружениями. Сам создаст, сам активирует, сам всем заправляет. Ты как царь, просто команды кидаешь.
-
Чтоб в PyPI свои поделки заливать. Собрал, опубликовал — и все довольны. Никакой магии с
setup.pyиtwine.
Как это выглядит в деле, на примере:
# 1. Создаём новый проект. Бац — и готов каркас.
poetry new my-awesome-project
cd my-awesome-project
# 2. Хочу requests. Добавляю. Он сам найдёт, что подходит, и запишет куда надо.
poetry add requests
# 3. Ставлю всё, что насобирал. Раз — и окружение готово.
poetry install
# 4. Запускаю свой скрипт в этом самом окружении. Красота!
poetry run python my_awesome_project/main.py
И чем это лучше старого способа с pip и venv?
- Умнее решает зависимости.
pipможет такое наставить, что потом полдня разгребаешь. А Poetry — он хитрая жопа, он сначала подумает, а потом сделает. - Воспроизводимость — пиздец какая.
poetry.lock— это святое. Скопировал проект, поставил зависимости — и получил точную копию окружения. Никаких сюрпризов. - Один инструмент на все случаи жизни. Не нужно прыгать между
pip,venvи прочей хуйнёй. Всё в одном флаконе. Удобно, ёпта!
В общем, если надоело, что каждый раз при клонировании проекта — это как лотерея, то Poetry — это твой выбор. Он, конечно, не серебряная пуля, но бардака становится ощутимо меньше.