Короткий ответ
Poetry — это инструмент для управления зависимостями и упаковки Python-проектов. Он описывает проект и его зависимости в файле pyproject.toml по стандарту PEP 621, ведёт файл блокировки poetry.lock с точными версиями и изолирует окружение проекта от глобальной установки Python.
Как это работает подробнее
Poetry приходит на смену связке pip с requirements.txt и автоматизирует рутину вокруг зависимостей и упаковки.
- Создание проекта. Команда
poetry new poetry-demoгенерирует каталог сpyproject.toml, README, пакетом и каталогом тестов. - Описание зависимостей. Пакеты указываются в секции
project.dependenciesс ограничениями версий вродеrequestsс^2.13.0. - Файл блокировки.
poetry.lockфиксирует точные версии всех зависимостей, и его рекомендуют коммитить в систему контроля версий. - Изоляция окружения. Poetry работает в собственном виртуальном окружении проекта и не затрагивает глобальную установку Python.
- Репозитории. По умолчанию используется PyPI, но поддерживаются и приватные репозитории для поиска и публикации пакетов.
Пример кода
Основные команды Poetry
poetry new poetry-demo # создать новый проект с pyproject.toml
poetry add requests # добавить зависимость
poetry install # установить зависимости из описания
poetry run pytest # запустить команду в окружении проектаЧто использовать на практике
- Новые проекты. Используй Poetry, чтобы держать управление зависимостями и упаковку в одном инструменте.
- Воспроизводимость. Коммить
poetry.lock, чтобы все участники получали одинаковые версии пакетов.