DevGang
Авторизоваться

Как установить Poetry для управления зависимостями Python в Ubuntu 22.04

Poetry - менеджер зависимостей для Python, который также может создавать и упаковывать ваши проекты Python для распространения. В качестве диспетчера зависимостей он поставляется с инструментами для поддержания согласованности и замкнутости виртуальных сред. Кроме того, в нем есть инструменты для интеграции с рабочими процессами с использованием других форм управления зависимостями, например, подобно equirements.txt.

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

Предпосылки:

  1. Сервер Ubuntu 22.04, настроенный в соответствии с нашим первоначальным руководством по настройке сервера для Ubuntu 22.04, с пользователем, не являющимся root, с привилегиями sudo и включенным брандмауэром.
  2. Последняя версия Python 3 установлена на вашем компьютере после выполнения шага 1 инструкции по установке Python 3 и настройке среды программирования на сервере Ubuntu 22.04.

Шаг 1: Установка Poetry

Poetry устанавливается с помощью официального установочного скрипта, представленного на веб-сайте Poetry.  Эта команда загрузит сценарий установки, а затем запустит установку Poetry в вашей системе. Хотя это руководство предназначено для сервера Ubuntu 22.04, этот сценарий установки мозно запустить в Linux, macOS и Windows с WSL (подсистема Windows для Linux), которую можно установить с помощью этого руководства. ВВедите следующую команду:

curl -sSL https://install.python-poetry.org | python3 -
…
[secondary_label Output]
Poetry (1.2.1) is installed now. Great!

To get started you need Poetry's bin directory (/home/sammy/.local/bin) in your `PATH`
environment variable.

Add `export PATH="/home/sammy/.local/bin:$PATH"` to your shell configuration file.

Alternatively, you can call Poetry explicitly with `/home/sammy/.local/bin/poetry`.
…

После завершения установки Poetry предложит вам добавить папку bin в ваш PATH, чтобы включить использование poetry в командной строке. В Ubuntu с Bash это можно сделать, открыв файл ~/.bashrc с помощью nano или другого текстового редактора

nano ~/.bashrc

Добавьте следующую строку в конец файла:

~/.bashrc
. . .
export PATH="/home/sammy/.local/bin:$PATH"

Сохраниет файл и выйлите из него, с nano это можно сделать, нажав CTRL+X - чтобы выйти, и Y - чтобы сохранить любые изменения.

Затем примените изменения к вашему текущему сеансу: 

source ~/.bashrc

Чтобы убедиться, что команда poetry теперь доступна, введите следующее, чтобы отобразить текущую версию Poetry: 

poetry --version
Output
Poetry (version 1.2.1)

Теперь у нас установлен работающий Poetry, и вы можете приступать к настройке проекта Poetry.

Шаг 2: Создание проекта Poetry

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

poetry new sammy_poetry

Затем перейдите в каталог вашего нового проекта:

cd sammy_poetry

Теперь ваш новый проект Poetry с необходимыми шаблонными файлами создан. Чтобы посмотреть недавно созданные файлы проекта, используйте команду  ls

ls
Output
README.md  dist  pyproject.toml  sammy_poetry  tests
Если у вас есть существующий проект, который вы хотите использовать, вы можете использовать другую команду, чтобы Poetry распознал его как проект. Перейдите в каталог существующего проекта и введите следующую команду:

poetry init

Это создаст все необходимые файлы в вашем существующем проекте, и вы сможете продолжить работу с этим учебным пособием, как если бы это был новый проект.

Шаг 3: Добавление зависимостей

Прежде чем вы начнете добавление зависимостей в свой проект, вы начнете с проверки и понимания файла, который Poetry использует для хранения ваших зависимостей. В каталоге вашего проекта Poetry находится автоматически сгенерированный файл   pyproject.toml, содержащих список ваших зависимостей. Откройте и осмотрите его с помощью следующих действий:

nano pyproject.toml
pyproject.toml
[tool.poetry]
name = "sammy-poetry"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"
packages = [{include = "sammy_poetry"}]

[tool.poetry.dependencies]
python = "^3.10"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

Наряду с вашими зависимостями, которые перечислены в tool.poetry.dependencies, также есть метаданные в tool.poetry. Не стесняйтесь настраивать эти метаданные, добавляя свою собственную информацию, такую как имя, адрес электронной почты и описание проекта. Блок build-system в настоящее время содержит спецификации того, как Poetry будет собирать ваши пакеты, и пока его можно оставить не тронутым. 

Следует отметить, что Python 3.10, хотя и является последней версией, может быть требовательным к ресурсам и может быть проблемой в зависимости от системы. Большинству библиотек Python требуется как минимум версия 3.8. Если вы хотите изменить версию Python, используемую вашим проектом в качестве зависимости, закрепление зависимостей версий будет рассмотрено на шаге 4 этого руководства.

В текущем состоянии наш проект не имеет никаких зависимостей, кроме самого Python. Poetry может добавлять новые зависимости в ваш проект прямо из командной строки. Используя команду Poetry add, Poetry одновременно добавит строку зависимости в ваш блок tool.poetry.dependencies и установит зависимость.

После проверки вашего файла pyproject.toml выйдите из редактора. В качестве примера вы добавите популярную HTTP-библиотеку Python, requests, в зависимости вашего проекта вместе с ее установкой с помощью команды add. Эта библиотека позволяет отправлять HTTP-запросы с минимальным шаблонным кодом и полезна для приложений взаимодействующих через HTTP, хотя для целей этой демонстрации будет достаточно любого пакета. Введите следующую команду:

poetry add requests
Output
Creating virtualenv sammy-poetry-i9Ouy_MV-py3.10 in /home/sammy/.cache/pypoetry/virtualenvs
Using version ^2.28.1 for requests

Updating dependencies
Resolving dependencies... (0.3s)

Writing lock file

Package operations: 5 installs, 0 updates, 0 removals

  • Installing certifi (2022.9.24)
  • Installing charset-normalizer (2.1.1)
  • Installing idna (3.4)
  • Installing urllib3 (1.26.12)
  • Installing requests (2.28.1)

Наряду с  добавлением в ваш файл pyproject.toml и установкой requests, команда add также выполняет инициализацию виртуальной среды. Кроме того, requests имеют свои собственные зависимости. Poetry автоматически устанавливает все эти зависимости, перед самой установкой requests.

Ваш файл pyproject.toml будет обновлен следующим образом:

pyproject.toml
. . .
[tool.poetry.dependencies]
python = "^3.10"
requests = "^2.28.1"
. . .

Это гарантирует, что requests всегда будет установлен. Символ ^ означает, что это будет минимально допустимая версия для установки, а также будут приемлемы более поздние версии. 

Шаг 4: Удаление и закрепление зависимостей

Чтобы обеспечить согласованность между вашими текущими установленными зависимостями и зависимостями, которые вы указали в файле pyproject.toml, Poetry использует lock file.  Poetry читает непосредственно из этого файла во время процесса установки, а это означает, что непосредственное редактирование файла pyproject.toml для изменения ваших зависимостей может вызвать некоторые ошибки или предупреждение, такие как это: 

Output
. . .
Warning: poetry.lock is not consistent with pyproject.toml. You may be getting improper dependencies. Run `poetry lock [--no-update]` to fix it.
. . .

Таким образом, если вам нужно удалить зависимость или отредактировать ее версию, вы должны использовать команду poetry remove. Хотя ручное редактирование файла   pyproject.toml возможно, вам придется учитывать lock file и вручную активировать виртуальную среду. Итак, в случае, если вы хотите изменить версию requests, сначала удалите ее с помощью команды:

poetry remove requests
Output
Updating dependencies
Resolving dependencies... (0.1s)

Writing lock file

Package operations: 0 installs, 0 updates, 5 removals

  • Removing certifi (2022.9.24)
  • Removing charset-normalizer (2.1.1)
  • Removing idna (3.4)
  • Removing requests (2.28.1)
  • Removing urllib3 (1.26.12)

Теперь, когда requests удален. вы можете добавить его снова в качестве закрепленной зависимости. Что касается зависимостей, вы часто хотите сохранить библиотеку в определенной версии для вашего проекта. Это часто происходит из-за проблем с совместимостью, поскольку библиотеки меняются с течением времени, и может быть полезно и может быть полезно для обеспечения согласованности вашего проекта. Это называется закреплением зависимостей.

В качестве примера вы будете привязывать requests к версии, отличной от последней, которая используется по умолчанию при выполнении команды add. Вместо этого вы прикрепите его к версии 2.26.0, которая является более ранней действительной версией, найденной в истории PyPI из requests:

poetry add requests@2.26.0
Output
Updating dependencies
Resolving dependencies... (0.3s)

Writing lock file

Package operations: 5 installs, 0 updates, 0 removals

  • Installing certifi (2022.9.24)
  • Installing charset-normalizer (2.0.12)
  • Installing idna (3.4)
  • Installing urllib3 (1.26.12)
  • Installing requests (2.26.0)

Теперь в вашем файле pyproject.toml вы найдете:

pyproject.toml
. . .
[tool.poetry.dependencies]
python = "^3.10"
requests = "2.26.0"
. . .

Это указывает на то, что requests всегда будут устанавливаться как версия 2.26.0.

Заключение

В этом руководстве вы установили Poetry, и создали проект Poetry, либо с нуля, либо в рамках существующего проекта. Вы также добавили к нему зависимости, а затем установили эти зависимости в виртуальной среде. Кроме того, вы удалили зависимость перед добавлением ее в качестве закрепленной зависимости в свой проект. Далее вы можете изучить дополнительные возможности Poetry с помощью этого руководства.

#Python #Ubuntu
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу