Poetry. Управление зависимостями для проектов на Python

20 Апр 2022 , 2755

При разработке нового проекта на 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

comments powered by Disqus

Подписка

Подпишитесь на наш список рассылки, чтобы получать обновления из блога

Рубрики

Теги