Введение

Введение


Poetry в Python: Современный инструмент для управления зависимостями и упаковки проектов


Введение

В мире Python разработки управление зависимостями и создание воспроизводимых окружений всегда было важной задачей. Раньше для этого использовали связку pip и virtualenv, но эти инструменты требуют ручного управления, что может приводить к конфликтам версий и сложностям в поддержке проектов. Poetry — современное решение, которое автоматизирует эти процессы, делая разработку чище и удобнее.


Что такое Poetry?

Poetry — это инструмент для:

  • Управления зависимостями (основными и для разработки).
  • Создания виртуальных окружений.
  • Сборки и публикации пакетов на PyPI.
  • Управления версиями проекта через семантическое версионирование.

Он использует файл pyproject.toml для хранения конфигурации, заменяя традиционные requirements.txt и setup.py.


Установка Poetry

Официальный способ установки — через скрипт:

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

Или с помощью pipx (рекомендуется для изоляции):

pipx install poetry

Проверьте установку:

poetry --version

Начало работы

Создание нового проекта

poetry new my_project

Структура проекта:

my_project/
├── pyproject.toml
├── README.md
├── src/
│   └── my_project/
│       └── __init__.py
└── tests/
    └── __init__.py

Инициализация существующего проекта

cd existing_project
poetry init

Мастер задаст вопросы о названии, версии, описании и зависимостях.


Файл pyproject.toml

Пример конфигурации:

[tool.poetry]
name = "my_project"
version = "0.1.0"
description = "Мой проект"
authors = ["Ваше Имя <you@example.com>"]

[tool.poetry.dependencies]
python = "^3.8"
requests = "^2.26.0"

[tool.poetry.dev-dependencies]
pytest = "^6.2.5"

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
  • dependencies — основные зависимости.
  • dev-dependencies — зависимости для разработки.
  • build-system — настройки сборки.

Управление зависимостями

  • Добавление пакета:
    poetry add requests  # основная зависимость
    poetry add pytest --group dev  # зависимость для разработки
  • Установка всех зависимостей:
    poetry install
  • Обновление пакетов:
    poetry update
  • Удаление пакета:
    poetry remove requests

Виртуальные окружения

Poetry автоматически создает виртуальное окружение. Команды:

  • Активация окружения:
    poetry shell
  • Запуск скрипта в окружении:
    poetry run python myscript.py
  • Просмотр пути к окружению:
    poetry env info

Сборка и публикация пакета

  • Сборка:
    poetry build  # создает .whl и .tar.gz в папке dist/
  • Публикация на PyPI:
    1. Зарегистрируйте токен в PyPI.
    2. Выполните:
    poetry publish

Интеграция с Docker

Пример Dockerfile:

FROM python:3.9-slim

WORKDIR /app
COPY pyproject.toml poetry.lock ./

RUN pip install poetry && \
    poetry config virtualenvs.create false && \
    poetry install --no-root --no-interaction

COPY . .
CMD ["poetry", "run", "python", "main.py"]

Плюсы и минусы Poetry

Преимущества:

  • Единый файл конфигурации.
  • Автоматическое разрешение версий.
  • Упрощенная публикация пакетов.
  • Поддержка семантического версионирования.

Недостатки:

  • Требует времени на изучение (особенно для новичков).
  • Может быть избыточным для простых проектов.

Сравнение с аналогами

  • pip + venv: Ручное управление, нет встроенной сборки пакетов.
  • pipenv: Близкий аналог, но менее гибкий в управлении зависимостями.
  • flit: Проще, но ориентирован только на упаковку.

Пример: Создание проекта с Poetry

  1. Инициализация:
    poetry new demo
    cd demo
  2. Добавление зависимостей:
    poetry add flask
    poetry add black --group dev
  3. Запуск тестов:
    poetry run pytest

Заключение

Poetry — мощный инструмент, который упрощает жизнь Python-разработчика. Он решает проблемы управления зависимостями, изоляции окружений и публикации пакетов, позволяя сосредоточиться на коде. Если вы еще не пробовали Poetry — самое время начать!