Повышение продуктивности в 2 раза с помощью Python Poetry

Автор: Javohir Abdullayev · · Python

Повышение продуктивности в 2 раза с помощью Python Poetry

Почему pip и requirements.txt сегодня уже недостаточны?

В мире Python при создании проектов многие разработчики по привычке используют подход python -m venv venv и pip install -r requirements.txt. Однако по мере роста проекта и увеличения числа библиотек до 20–30 начинаются непредвиденные проблемы: внутренние зависимости библиотек (sub-dependencies) конфликтуют друг с другом, пакеты для разработки (dev) и продакшена (production) смешиваются, а при клонировании проекта другим разработчиком нет 100% гарантии установки в точности тех же версий.

Чтобы навсегда забыть об этих проблемах и значительно повысить скорость работы, в современной экосистеме Python стандартом становится инструмент Poetry.

Что такое Poetry и каковы его основные преимущества?

Poetry — это комплексный инструмент для управления пакетами в проектах на Python, автоматической настройки виртуального окружения (virtualenv) и публикации пакетов на платформе PyPI. Он работает аналогично npm в мире Node.js или Cargo в Rust.

  • Автоматическое виртуальное окружение: Больше не нужно каждый раз вручную создавать и активировать папки venv. Poetry делает это самостоятельно прямо в контексте директории проекта.
  • Стандарт pyproject.toml: Вместо множества файлов вроде requirements.txt, setup.py и setup.cfg все настройки хранятся в едином современном файле pyproject.toml стандарта PEP 518.
  • Файл poetry.lock: Сохраняет точные версии всех установленных пакетов и их зависимостей, что обеспечивает одинаковую работу проекта на всех серверах (детерминированная система).
  • Разделение на группы: Инструменты для тестирования или форматирования (например, pytest, black, ruff) можно вынести исключительно в группу разработки (dev group).

Установка Poetry и запуск проекта

Для корректной глобальной установки Poetry в вашей системе рекомендуется использовать следующую команду:

curl -sSL https://install.python-poetry.org | python3 -

После завершения установки проверьте корректность её работы:

poetry --version

Создание нового проекта или настройка существующего

Для старта нового проекта используется команда poetry new mening_loyiham. Если вы хотите инициализировать Poetry в уже существующей папке:

poetry init

Эта команда задаст вам интерактивные вопросы (название проекта, описание, автор и библиотеки) и автоматически сгенерирует файл pyproject.toml.

Установка пакетов и работа с группами

Добавление пакетов через Poetry происходит очень быстро и удобно. Например, если вы хотите добавить в проект FastAPI и Uvicorn:

poetry add fastapi uvicorn

Если вам нужно добавить инструменты, необходимые только в процессе разработки (например, pytest), добавьте их в отдельную группу:

poetry add pytest pytest-asyncio --group dev

Благодаря этому подходу при деплое проекта на продакшен-сервер (production) вы можете сэкономить ресурсы, не устанавливая лишние пакеты:

poetry install --without dev

Запуск кода в виртуальном окружении

Поскольку Poetry самостоятельно управляет виртуальным окружением, запустить команды внутри него можно двумя простыми способами:

  1. Напрямую через poetry run:
    poetry run python main.py
  2. Через вход в окружение (poetry shell):
    poetry shell
    python main.py

Заключение

Python Poetry — это не просто новый менеджер пакетов, а мощный инструмент, экономящий время в командных и личных проектах, предотвращающий конфликты библиотек и упрощающий процесс деплоя. Если вы всё ещё используете традиционный метод с requirements.txt, попробуйте начать свой следующий Python-проект с Poetry и почувствуйте, как ваша продуктивность выйдет на новый уровень.

Теги: #Python #Poetry #Ish samaradorligi #Backend