Ответ
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 Ответ 18+ 🔞
Да ты посмотри, что эти умники придумали! Сидят, блядь, в своих питонячих норах, и им всё мало: то pip не тот, то virtualenv кривой, то в requirements.txt чёрт ногу сломит. Ну и наваяли они, суки, Poetry — этакую палочку-выручалочку, которая должна всю эту пиздобратию в кучу собрать и порядок навести.
По замыслу, конечно, охуенно: один файлик pyproject.toml, и в нём всё — и как проект зовут, и кто его родил, и чем он питается (то бишь, какие библиотеки жрёт). А главное — детерминизм, ёпта! Чтобы у тебя, у меня и у того чувака из Омска проект вставал одинаково, а не как обычно: «А у меня работает!».
Что эта мартышлюшка умеет:
- Всё в одном флаконе: Не нужно бегать между
pip,venvи прочим. Всё описал вtoml— и пошла писать губерния. - Сама по себе: Виртуальное окружение создаст сама, в него сама всё поставит. Ты только команды ей подавай. Красота, блядь.
- Замок на версии: Создаёт файл
poetry.lock, где намертво, как влитой, прописано, какая именно версия каждой библиотеки (и библиотек этих библиотек!) должна стоять. Никаких «а сегодняnumpyобновился и всё сломал». - Упаковать и выложить: Собрал проект в красивый пакет — и на PyPI его, родимого, одним махом. Не надо эти
setup.pyс тремя высшими образованиями читать.
Как с этой хуйней работать, на примере:
# Создаём новый проект. Poetry нагенерит папок, файлов — красота.
poetry new my-awesome-project
cd my-awesome-project
# Нужна библиотека? Проще пареной репы. Добавит и в конфиг, и в лок-файл.
poetry add requests
# Ставим всё, что насоздавали и наaddedли. Poetry сама окружение поднимет и натянет зависимости.
poetry install
# А чтобы запустить свой скрипт в этом самом окружении — не надо активировать, блядь, вручную.
poetry run python my_awesome_project/main.py
Вот и вся магия. Сначала, конечно, пиздец как непривычно, кажется, что они тут нагородили. Но потом втягиваешься и понимаешь — а ведь удобно, ёпта. Не зря же старались.