poetry python что это
Poetry: новый менеджер зависимостей в Python
В последнее время в экосистеме Python часто стали появляться инструменты для управления зависимостями. Оно понятно, стандартный pip уже не отвечает современным требованиям: неудобная работа с зависимостями, много ручной работы при подготовке пакетов, проблемы при установке и обновлении и много чего другого.
С недавних пор я начал использовать новый менеджер под названием Poetry. Именно о нём сегодня пойдёт речь.
Функциональные возможности Poetry:
А особенно радует тандем при работе с pyenv. О pyenv я писал три года назад.
Установка
Исходный код проекта лежит на github. Для установки необходимо выполнить команду:
Если установка прошла успешно, то убедиться в этом можно вызвав:
Стартуем!
Создаём новый проект my-demo-project:
Poetry автоматически создал все необходимые файлы для будущего пакета, но наибольший интерес представляет файл с названием pyproject.toml, этот файл можно рассматривать как продвинутую альтернативу старичку requirements.txt. Взглянем на содержимое:
Формат файла TOML. Раздел tool.poetry предназначен для описания проекта: название, версия, краткая информация о проекте и т.д. Далее следует tool.poetry.dependencies, именно здесь будут указаны все production зависимости. Их можно указать вручную (привет, requirements.txt), но мы так делать не будем (привет, npm!). Раздел tool.poetry.dev-dependencies предназначен для зависимостей во время разработки (привет, pytest, tox!)
Добавляем зависимости
Давайте добавим к проекту зависимость в виде Luigi.
Обратите внимание, что Poetry автоматически создал виртуальное окружение через virtualenv при добавлении пакета (т.к. ранее оно не было создано). Все окружения находятся по пути
Если снова открыть pyproject.toml, то можно увидеть новую запись в разделе зависимостей:
Всю «грязную» работу за нас делает Poetry. Чтобы добавить зависимость для разработки достаточно указать флаг —dev:
Смотрим содержимое pyproject.toml ещё раз:
Чтобы удалить зависимость нужно выполнить:
Сборка пакета
Отныне забудьте про головную боль с ручным созданием setup.py, прописыванием туда всех зависимостей и запоминанием команд для сборки через pip. Всё стало в разы проще. Чтобы собрать python пакет выполните:
В папке dist будут сформированы пакеты. Чтобы поделиться своим творением с другими разработчиками, например через pypi, выполните:
Окружение
Для активации виртуального окружения необходимо выполнить команду:
Вывод
Проект Poetry появился 28 февраля 2018 года, последняя версия 0.12.8. Инструмент молодой, но перспективный и быстроразвивающийся. Уже сейчас он на голову выше старичка pip и по функциональным возможностям и по удобству использования. Советую вам его попробовать и поделиться мнением в комментариях к этой статье. За более подробной информацией об инструменте советую заглянуть на сайт с документацией.
💌 Присоединяйтесь к рассылке
Понравился контент? Пожалуйста, подпишись на рассылку.
Мелкая питонячая радость #3: Poetry
Управление зависимостями? Шо, опять?
Экосистема Python породила целую пачку способов управления зависимостями в проектах.
Прямо сейчас можно выбирать между setup.py, requirements.txt, setup.cfg, MANIFEST.in и Pipfile.
Но французского питониста Sébastien Eustace все эти способы не устроили, и он написал свою штуку для менеджмента питонячих пакетов — Poetry. Зачем он это сделал? Чтобы заменить все эти setup.py, requirements.txt, setup.cfg, MANIFEST.in и Pipfile чем-то простым и понятным. Плюс добавить кое-что полезное сверху.
Poetry позволяет рулить сразу кучей вещей — версией языка в вашем проекте, зависимостями, подключаемыми путями, скриптами тестирования/разработки, сборкой и публикацией билдов.Все необходимые пути, зависимости и скрипты описываются в специальном файле pyproject.toml.
Poetry лучше всего работает в паре с pyenv — системой управления множественными версиями Python и виртуальными окружениями.
Щупаем
Засучим рукава и посмотрим, как poetry работает в деле. Первым делом ставим pyenv, следуя официальной инструкции в доках.
Среда установлена и настроена, зависимости управляются одним пальцем, можно пилить код!
У вас, скорее всего, появятся в проекте команды запуска сервера, воркеров, скриптов деплоя и тестирования. Их можно засунуть в pyproject.toml и тоже рулить ими одним пальцем.
и теперь можно запускать скрипт командой
Зачем это все?
Потратив десяток минут на освоение этой штуки, вы сэкономите время и нервы на управлении версиями языка и пакетов, отслеживании зависимостей и настройке путей. Особенно это поможет тем, кто хоть раз пробовал опубликовать свои наработки в pip 🙂
Poetry прекасно дружит с другими управлялками виртуальными средами, так что интегрировать новый подход в старые проекты будет очень легко.
Менеджер зависимостей Poetry — полный обзор от установки до настройки
Poetry – это инструмент для управления зависимостями и сборкой пакетов в Python.
В Poetry представлен полный набор инструментов, которые могут понадобиться для детерминированного управления проектами на Python. В том числе, сборка пакетов, поддержка разных версий языка, тестирование и развертывание проектов.
Содержание
Все началось с того, что создателю Poetry Себастьену Юстасу потребовался единый инструмент для управления проектами от начала до конца, надежный и интуитивно понятный, который бы мог использоваться и в рамках сообщества. Одного лишь менеджера зависимостей было недостаточно, чтобы управлять запуском тестов, процессом развертывания и всем созависимым окружением. Этот функционал находится за гранью возможностей обычных пакетных менеджеров, таких как Pip или Conda. Так появился Python Poetry.
Что умеет Poetry
Ключевой фичей Poetry Python является полное управление библиотеками, заявленными для вашего проекта, включая их установку, обновление и публикацию.
А еще он может:
Функционал командной строки расширяется с помощью плагинов, а предустановленные значения при необходимости легко заменяются на свои варианты. В целом, продукт имеет юзер-френдли интерфейс.
Установка
Poetry – кроссплатформенный инструмент. Теоретически он должен одинаково работать в Linux, MacOS и Windows. Системные требования предполагают использование актуальных версий Python, поэтому начиная с версии Poetry 1.2 не поддерживаются Python 2.7 и 3.5, будьте внимательны!
Poetry создает изолированное виртуальное окружение для вашего проекта, инсталлируя все необходимое и разруливая конфликты зависимостей (если они в принципе решаемы).
По умолчанию установка происходит в домашний каталог пользователя, но это можно изменить путем переопределения переменной окружения POETRY_HOME:
Установка на OSX и Linux
Если дефолтная версия языка не устраивает или если для установки хочется воспользоваться версией питона 3.x, а по умолчанию стоит 2.7, используйте команду:
Обратите внимание: процесс установки может занять довольно длительное время.
Установка на Windows
Установка через PIP и PIPX
Для данного варианта установки необходимо иметь на борту менеджер пакетов PIP (или PIPX).
Для установки Poetry через PIP выполните команду:
Имейте ввиду, что зависимости пакета Poetry могут вызвать конфликт с уже установленными пакетами в вашей системе.
Команды Pipx для установки, обновления и удаления инструмента:
Pipx поддерживает только версии Python старше 3.6.
Работа с Poetry
Для начала убедимся, что Poetry корректно установлен, введя в терминал команду:
Если в ответ высветится актуальный номер версии, можно приступать к работе.
Перед работой с Poetry проверьте корректность установки командой «poetry —version»
Создание проекта
Создаем пробный проект и присваиваем ему название «project-poetry»:
Произойдет автоматическое создание папки проекта со следующей структурой:
В случае, если необходимо инициализировать Poetry-проект в уже существующем каталоге, перейдите в него и выполните команду:
Pyproject.toml
В файле pyproject.toml содержится описание вашего Poetry-проекта – название, описание, используемый репозиторий, зависимости проекта и т.д. С помощью него легко организовать зависимости вашего проекта ( pyproject.toml можно назвать преемником устаревшего requirements.txt ).
После инициализации проекта, содержание файла будет следующим:
Разберемся, что означает каждая секция:
📌 О дополнительных секциях файла можете прочитать в официальной документации The pyproject.toml file.
Установка пакета
Теперь установим новый пакет в наш проект:
Результат выполнения команды установки пакета «poetry add»
После установки пакета, в pyproject.toml появится новая запись:
Удаление пакета
Для удаления пакета достаточно выполнить команду:
Для удаления пакета выполните poetry remove «имя_пакета»
Poetry и виртуальное окружение
По умолчанию, Poetry автоматически создает виртуальное окружение для вашего проекта в cache-директории:
В эту директорию будут сохраняться все зависимости для проекта.
📌 Что такое виртуальное окружение и как оно работает можно прочитать тут.
Конфигурация Poetry
Для примера, попробуем настроить Poetry так, чтобы он создавал виртуальное окружение virtualenvs не в cache-директории, а в корневом каталоге проекта. Для этого установим переменной virtualenvs.in-project значение true :
Чтобы убедиться, что значение успешно установилась, выполним команду:
📌 Подробнее о настройке конфигурации Poetry читайте тут.
Список команд
Poetry охватывает множество функций, связанных с управлением конфигурацией и публикацией пакетов:
Сборка и настройка пакета
В результате в папке dist будут сформированы пакеты.
Результат сборки пакета находится «dist»
Сохранить учетные данные для этого репозитория также можно с помощью команды config:
В приведенной команде user и password соответствуют имени пользователя и паролю для входа в наш частный репозиторий. Обратите внимание, если не указать пароль, то его будет предложено ввести при развертывании пакета.
Закончив настройку, мы можем просто развернуть пакет следующей командой:
Poetry и Docker
Затем устанавливаются разные наборы зависимостей для переменной среды:
Опубликовано Вадим В. Костерин
ст. преп. кафедры ЦЭиИТ. Автор более 130 научных и учебно-методических работ. Лауреат ВДНХ (серебряная медаль). Посмотреть больше записей
Poetry — прекрасная альтернатива pip (шпаргалка)
Предлагаю тем, кто пишет на Python, познакомиться с данным инструментом, так как это очень простой и удобный в использовании инструмент, применение которого может упростить ведение и разработку проекта.
Установка
Установить poetry на windows можно либо при помощи pip:
Либо более гибким вариантом через powershell:
Отличие от pip
Чтобы установить зависимости в pip необходимо выполнить:
Что для poetry займет всего 2 слова:
Просмотр зависимостей в pip можно сделать только командой:
Однако будут показаны только актуальные версии библиотек, не будет возможности увидеть структуру всех пакетов с их зависимостями. В poetry в файле poetry.lock можно увидеть сведения обо всех установленных пакетах, команда:
Покажет древовидную структуру пакетов с их личными зависимостями.
Так же запуск проекта в pip (в случае с виртуальным окружением) создает неудобства, так как первым делом необходимо зайти в это самое окружение при помощи команды:
И только затем можно выполнять какие-либо изменения с проектом. В poetry нет необходимости активировать виртуальное окружение, достаточно лишь зайти в папку с проектом и начинать пользоваться командами. Poetry сам найдет нужное окружение. Также в poetry можно менять версию python без необходимости менять старое виртуальное окружение.
Это лишь малая часть преимуществ. Далее рассмотрим примеры команд и структуру poetry файлов.
pyproject.toml
documentation- URL документации проекта
main-run = ‘new_proj.main:run’ (после чего достаточно запустить poetry main-run и будет выполнен запуск функции run в файле new_prof/main.py)
Далее зависимости можно установить двумя способами:
Пример данных в pyproject.toml
Основные методы
Чтобы сделать пакетным менеджером poetry в уже имеющемся проекте, достаточно выполнить:
Далее будет предложено заполнить немного основной информации о проекте
Метод может принимать некоторые необязательные параметры:
—description: описание проекта
—python: совместимые версии Python
—dependency: требуемый пакет с версией пакета
—dev-dependency: требования к разработке
После чего в проекте появится файл pyproject.toml, в котором вручную можно изменить любые данные.
install
Чтобы установить зависимости проекта достаточно выполнить команду:
Poetry считывает данные из pyproject.toml, строит дерево зависимостей проекта, разрешая проблемы с версиями зависимостей, и устанавливает все пакеты. Однако, если в проекте уже есть файл poetry.lock, то будут использоваться точные версии из этого файла.
Метод может принимать параметры:
—remove-untracked: удалит старые пакеты, которые больше не используются в проекте
—no-dev: dev пакеты не будут устанавливаться
update
Чтобы обновить версии зависимостей (тем самым обновив файл poetry.lock) достаточно выполнить:
Также есть возможность обновить лишь определенные пакеты:
Метод может принимать дополнительные параметры:
—no-dev : игнорирует обновление dev пакетов
—lock : не устанавливает и не обновляет пакеты, а только обновляет файл poetry.lock
Чтобы добавить новую библиотеку достаточно выполнить:
Можно указывать версию пакета:
Можно передать параметры:
—dev (-D): установит пакет в качестве dev зависимости
—path: путь к пакету (если пакет лежит локально)
—lock : не устанавливает зависимости, а только обновляет файл poetry.lock
remove
Чтобы удалить зависимость достаточно выполнить:
Дополнительно можно передать параметры:
—dev : удалит пакет из dev зависимостей
Чтобы посмотреть зависимости проекта достаточно выполнить:
результат poetry show
Если необходимо посмотреть информацию о конкретном пакете:
результат poetry show pygame
Посмотреть дерево зависимостей проекта можно при помощи:
Также можно передать параметры:
—tree: список зависимостей в виде дерева
—latest (-l): показать последние версии проектов
—outdated (-o): показать последние версии только для устаревших пакетов
Чтобы запустить проект достаточно выполнить:
PyCharm & Poetry
В PyCharm 2021.3 добавили поддержку Poetry. Теперь при создании проекта можно сразу указать poetry основным пакетным менеджером. Перед использованием необходимо установить executable версию poetry (на windows через poweshell):
После чего можно без проблем выбрать Poetry при создании проекта:
Установка poetry как менеджер пакетов в Pycharm
Структура проекта
При установке пакетов через менеджер PyCharm файл pyproject.toml будет автоматически обновляться сам:
Версии зависимостей
При установке пакета можно указать точную версию проекта, например:
Но иногда есть необходимость указать диапазон версий пакета, чтобы получать обновления, в таком случае есть несколько способов указать диапазон:
Вот какие диапазоны принимают данные префиксы версий:
Начало работы с Poetry — Python: Настройка окружения
Мы в Hexlet считаем, что именно poetry лучше всего подходит на роль «главного инструмента» Python-разработчика. Поэтому все проекты в рамках профессии предполагают использование poetry.
Вам стоит взять poetry на вооружение как можно раньше и приучить себя оформлять каждый эксперимент как poetry-проект, даже если этот проект может показаться маленьким. Так вы быстрее привыкнете использовать профессиональные инструменты и делать это правильным способом — выработаете хорошие привычки!
Установка poetry
Если установка прошла успешно, poetry должен стать доступен как отдельная команда в shell:
Как правило, указанные в документации команды, что называется, «просто работают». Но если у вас что-то не получится, напишите в наш Slack — наверняка, кто-то да сталкивался с теми же проблемами и успешно с ними справился!
Предварительная настройка
Если вы запросите перечень настроек poetry сразу после установки, то увидите что-то подобное:
Теперь каждый poetry-проект будет иметь виртуальное окружение при себе! Это позволит, к примеру, переносить проект с одной машины на другую простым копированием директории.
Первый проект
В файле README.rst вы будете держать описание проекта.
Отдельно стоит отметить последний пункт: poetry приучает к тому, чтобы вы всегда думали о проекте так, как будто вы будете его публиковать — любой «уважающий себя» пакет имеет хорошее описание и правильную структуру, ему всегда назначена какая-то версия. Стоит думать о таких вещах, даже если вы не собираетесь публиковать каждый ваш проект в индекс!
Первый взгляд на pyproject.toml
У только что созданного проекта файл конфигурации выглядит примерно так:
Здесь строчки вида [tool.poetry] описывают секции, в секциях же находятся пары «ключ = значение». Важно помнить, что большинство ключей нельзя помещать «не в те» секции. Вы всегда можете посмотреть в документации, какие ключи бывают и каким секциям они принадлежат.
В данный момент нам интересны первые три секции:
Секция build-system описывает тот факт, что перед нами именно проект, управляемый poetry. Но существуют и другие инструменты для управления проектами, для них секция build-system будет выглядеть иначе.
Инициализация виртуального окружения
Как правило, poetry сам может понять, что окружение пора создать или обновить. Но можно и явно вызвать команду poetry install :
В процессе будут установлены все зависимости — и «runtime» и «dev». Для рассматриваемого проекта это означает, что будет установлен пакет pytest (вместе с его зависимостями), а это значит, что теперь pytest можно запустить:
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Наши выпускники работают в компаниях:
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.