Как установить Poetry для управления зависимостями Python в Ubuntu 22.04
Poetry - менеджер зависимостей для Python, который также может создавать и упаковывать ваши проекты Python для распространения. В качестве диспетчера зависимостей он поставляется с инструментами для поддержания согласованности и замкнутости виртуальных сред. Кроме того, в нем есть инструменты для интеграции с рабочими процессами с использованием других форм управления зависимостями, например, подобно equirements.txt
.
В этом руководстве вы установите Poetry с помощью официального сценария установки, настроите проект Poetry с виртуальной средой, а затем добавите и установите зависимости вашего проекта.
Предпосылки:
- Сервер Ubuntu 22.04, настроенный в соответствии с нашим первоначальным руководством по настройке сервера для Ubuntu 22.04, с пользователем, не являющимся root, с привилегиями
sudo
и включенным брандмауэром. - Последняя версия 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
Добавьте следующую строку в конец файла:
. . .
export PATH="/home/sammy/.local/bin:$PATH"
Сохраниет файл и выйлите из него, с nano
это можно сделать, нажав CTRL+X
- чтобы выйти, и Y
- чтобы сохранить любые изменения.
Затем примените изменения к вашему текущему сеансу:
source ~/.bashrc
Чтобы убедиться, что команда poetry
теперь доступна, введите следующее, чтобы отобразить текущую версию Poetry:
poetry --version
Poetry (version 1.2.1)
Теперь у нас установлен работающий Poetry, и вы можете приступать к настройке проекта Poetry.
Шаг 2: Создание проекта Poetry
Начните создание нового проекта с Poetry. Этот проект будет поставляться с виртуальной средой, которая будет использоваться при установке ваших зависимостей и управления ими. В этом уроке будет использоваться название проекта sammy_poetry
, но не стесняйтесь выбирать предпочитаемое вами имя.
poetry new sammy_poetry
Затем перейдите в каталог вашего нового проекта:
cd sammy_poetry
Теперь ваш новый проект Poetry с необходимыми шаблонными файлами создан. Чтобы посмотреть недавно созданные файлы проекта, используйте команду ls
ls
README.md dist pyproject.toml sammy_poetry tests
Если у вас есть существующий проект, который вы хотите использовать, вы можете использовать другую команду, чтобы Poetry распознал его как проект. Перейдите в каталог существующего проекта и введите следующую команду:poetry init
Это создаст все необходимые файлы в вашем существующем проекте, и вы сможете продолжить работу с этим учебным пособием, как если бы это был новый проект.
Шаг 3: Добавление зависимостей
Прежде чем вы начнете добавление зависимостей в свой проект, вы начнете с проверки и понимания файла, который Poetry использует для хранения ваших зависимостей. В каталоге вашего проекта Poetry находится автоматически сгенерированный файл pyproject.toml
, содержащих список ваших зависимостей. Откройте и осмотрите его с помощью следующих действий:
nano 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
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
будет обновлен следующим образом:
. . .
[tool.poetry.dependencies]
python = "^3.10"
requests = "^2.28.1"
. . .
Это гарантирует, что requests
всегда будет установлен. Символ ^ означает, что это будет минимально допустимая версия для установки, а также будут приемлемы более поздние версии.
Шаг 4: Удаление и закрепление зависимостей
Чтобы обеспечить согласованность между вашими текущими установленными зависимостями и зависимостями, которые вы указали в файле pyproject.toml
, Poetry использует lock file
. Poetry читает непосредственно из этого файла во время процесса установки, а это означает, что непосредственное редактирование файла pyproject.toml
для изменения ваших зависимостей может вызвать некоторые ошибки или предупреждение, такие как это:
. . .
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
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
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
вы найдете:
. . .
[tool.poetry.dependencies]
python = "^3.10"
requests = "2.26.0"
. . .
Это указывает на то, что requests
всегда будут устанавливаться как версия 2.26.0
.
Заключение
В этом руководстве вы установили Poetry, и создали проект Poetry, либо с нуля, либо в рамках существующего проекта. Вы также добавили к нему зависимости, а затем установили эти зависимости в виртуальной среде. Кроме того, вы удалили зависимость перед добавлением ее в качестве закрепленной зависимости в свой проект. Далее вы можете изучить дополнительные возможности Poetry с помощью этого руководства.