Poetry. Управление зависимостями для проектов на Python
При разработке нового проекта на Python рекомендуется начинать с создания виртуальной среды, которая изолирует проект от других установленных пакетов на вашей системе. Для добавления внешних зависимостей, таких как Django, requests и других библиотек, я обычно использую инструмент управления пакетами pip. Далее для удобства мы формируем файл c зависимостями requirements.txt , который содержит список всех зависимостей проекта
Но в последних проектах я для управления зависимостями начал использовать Poetry . И в этой статье мне хочется рассказать , что из себя представляет Poetry, как его использовать в своих проектах и какие возможности он предоставляет.
Признаться, я довольно долго остерегался данного продукта и не понимал для чего нужен еще один инструмент для управления зависимостями. Использовать pip было привычно
Но углубившись поглубже, я понял почему предпочтительно использовать Poetry и какие преимущества он предоставляет
Установка Poetry
Рекомендуемый способ установки Poetry - использование официального скрипта install-poetry.
Для Linux и MacOS
curl https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python3 -
Для Windows
Перейдите по этой ссылке
Чтобы проверить установлен ли у вас Poetry и какой версии , вы должны запустить команду:
poetry --version
Эта команда отобразит вам текущую версию Poetry
Давайте создадим новый проект используя Poetry. Запустим следующую команду:
poetry new blogproject
Мы создали проект blogproject. Создается вот такая структура:
Вышеуказанный процесс создает структуру проекта blogproject, включающую в себя пакет с тем же именем, папку с тестами tests, где находится файл test_blogproject.py с первым тестом. Также создаются файл README и ключевой файл pyproject.toml. Давайте подробнее разберем содержание файла pyproject.toml.
Файл pyproject.toml
pyproject.toml - это файл конфигурации проекта, используемый Poetry для управления зависимостями и другими параметрами проекта. Он представляет собой файл в формате TOML (Tom's Obvious, Minimal Language), который является простым форматом для записи конфигурационных файлов.
[tool.poetry]
name = "blogproject"
version = "0.1.0"
description = ""
authors = ["Фамилия Имя Автора "]
[tool.poetry.dependencies]
python = "^3.9"
[tool.poetry.dev-dependencies]
pytest = "^5.2"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
Давайте разберем созданный pyproject.toml
[tool.poetry] - это секция, содержащая основные настройки проекта для Poetry.
Это секция содержить следующие настройки:
name: Имя вашего проекта, в данном случае - "blogproject".
version: Версия вашего проекта, установлена на "0.1.0".
description: Описание проекта. В данном случае оставлено пустым.
authors: Список авторов проекта. Здесь указано только одно имя - "Фамилия Имя Автора".
[tool.poetry.dependencies]: Секция, где перечисляются зависимости проекта.
python: Это зависимость от версии Python, указана версия "^3.9", что означает, что проект совместим с версией Python 3.9 и выше.
[tool.poetry.dev-dependencies]: Секция, где перечисляются зависимости, необходимые только для разработки.
pytest: Зависимость от библиотеки Pytest, указана версия "^5.2", что означает, что проект использует Pytest версии 5.2 и выше для написания и запуска тестов.
[build-system]: Секция, содержащая информацию о системе сборки проекта.
requires: Список зависимостей системы сборки. Здесь указана зависимость от Poetry Core версии 1.0.0 и выше.
build-backend: Указание на то, какую систему сборки использовать. В данном случае, указано использование Poetry.
Создаем виртуальную среду
Для создания виртуальной среды нужно использовать следующую команду:
poetry env use python3
При запуске данной команды вывод будет такой:
Creating virtualenv blogproject-vv4olcI7-py3.12 in /Users/Mac/Library/Caches/pypoetry/virtualenvs
Using virtualenv: /Users/Mac/Library/Caches/pypoetry/virtualenvs/blogproject-vv4olcI7-py3.12
Пока вы находитесь в папке своего проекта, Poetry будет использовать связанную с ним виртуальную среду. Если у вас когда-либо возникнут сомнения, вы можете проверить, активирована ли виртуальная среда, еще раз выполнив команду env list:
poetry env list