Poetry — как навести порядок в Python-зависимостях
Знакомая ситуация? Вы клонируете Python-проект, пытаетесь его запустить, а там — конфликты версий, отсутствующие пакеты и сломанные зависимости. Тратите полдня на настройку окружения вместо работы. Именно эти проблемы решает Poetry — инструмент, который уже используют более 33 тысяч разработчиков (судя по звездам на GitHub).
Что такое Poetry и зачем он нужен
Poetry — это не просто менеджер пакетов, а комплексное решение для управления зависимостями Python-проектов. Он заменяет целый зоопарк файлов (setup.py, requirements.txt, setup.cfg, MANIFEST.in, Pipfile) одним аккуратным pyproject.toml.

Если вы:
- Устали от ручного управления зависимостями
- Хотите простой способ создавать и публиковать пакеты
- Работаете в команде и хотите избежать проблем с "а у меня работает"
...то Poetry создан специально для вас.
5 причин попробовать Poetry
- Один файл вместо пяти
Все настройки проекта и зависимости хранятся в
pyproject.toml. Вот как это выглядит:
[tool.poetry]
name = "my-package"
version = "0.1.0"
description = "The description of the package"
[tool.poetry.dependencies]
python = ">=3.8"
aiohttp = "^3.8.1"
requests = { version = "^2.28", extras = ["security"] }
-
Умное управление версиями Poetry автоматически разрешает конфликты зависимостей и использует семантическое версионирование (те самые символы ^ и ~ перед номерами версий).
-
Изолированные окружения Больше не нужно вручную создавать virtualenv — Poetry делает это автоматически.
-
Группы зависимостей Можно разделить зависимости на основные, тестовые, документационные:
[tool.poetry.group.dev.dependencies]
pytest = "^7.1.2"
pytest-cov = "^3.0"
[tool.poetry.group.docs.dependencies]
Sphinx = "^5.1.1"
- Публикация пакетов в один клик
Команда
poetry publishупрощает выкладку вашего пакета в PyPI.
Как начать использовать Poetry
Установка проще простого:
curl -sSL https://install.python-poetry.org | python3 -
Основные команды, которые стоит запомнить:
poetry new— создать новый проектpoetry add— добавить зависимостьpoetry install— установить все зависимостиpoetry run— выполнить скрипт в окружении проектаpoetry shell— войти в виртуальное окружение
Из личного опыта
Помню, как в одном проекте мы потратили два дня на решение проблемы с конфликтующими версиями pandas и numpy. После перехода на Poetry подобные проблемы исчезли — инструмент просто не дает установить несовместимые версии. А автоматическое создание pyproject.toml при инициализации проекта сэкономило мне кучу времени.
Кому особенно пригодится
- Разработчикам, которые работают над несколькими проектами одновременно
- Командам, где важно единообразие окружений
- Авторам Python-пакетов
- Тем, кто устал от ручного управления virtualenv
Poetry — это не просто очередной инструмент, а реальное решение наболевших проблем Python-разработки. Если вы еще не попробовали — самое время. А если уже пользуетесь — возможно, обнаружите новые полезные фичи в официальной документации.
Кстати, у Poetry есть активное сообщество в Discord, где можно задать вопросы и пообщаться с разработчиками инструмента.
