Публикация пакетов Python в PyPI через Poetry

Poetry — это менеджер зависимостей для Python, который также может создавать и упаковывать проекты Python для распространения. PyPI — официальный репозиторий Python для загрузки и скачивания пакетов. Это официальный ресурс пакетов для третьих лиц, которым управляет Python Software Foundation. После публикации на PyPI пакеты становятся доступными для установки.

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

Требования

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

1: Создание учетной записи PyPI

Перед загрузкой пакета в PyPI, необходимо создать учетную запись. Перейдите на официальную страницу регистрации.

Далее, чтобы обезопасить свои учетные данные PyPI, нужно включить аутентификацию по токену.

2: Включение аутентификации по токену

Аутентификация с помощью токена — это рекомендуемый способ проверки учетной записи PyPI в командной строке. При этом вместо имени пользователя и пароля можно использовать автоматически сгенерированный токен. Токены можно добавлять и отзывать в любое время; с их помощью можно предоставлять доступ к отдельным частям вашей учетной записи. Это делает их безопасными и значительно уменьшает риск взлома. Теперь создадим новый API-токен для учетной записи, для этого перейдите в настройки учетной записи:

Прокрутите вниз и найдите раздел “API tokens”. Нажмите “Add API token”:

На следующей странице можно назвать свой токен. В этом мануале он будет называться poetry, но вы можете выбрать любое имя:

После создания токена важно скопировать его, потому что он будет показан только один раз. Это обычное дело для API-токенов, которые можно создавать заново по мере необходимости.

Теперь с помощью этого токена можно настроить свои учетные данные в Poetry для подготовки к публикации. Чтобы не добавлять свой API токен к каждой команде, которой он нужен в Poetry, мы сделаем это один раз с помощью команды config:

poetry config pypi-token.pypi your-api-token

Добавленный API токен будет использоваться как учетные данные. Poetry уведомит о том, что ваши учетные данные хранятся в простом текстовом файле. Если использовать обычное имя пользователя и пароль для учетных данных, то это будет небезопасно. Хранение токенов безопасно и удобно, так как они легко удаляются, обновляются и генерируются случайным образом. Но также можно вводить свой API токен вручную для каждой команды.

Сейчас всё готово для создания и публикации проекта.

3: Сборка проекта

Сборка — это то же, что и упаковка проекта и это обязательный шаг перед его публикацией. Чтобы собрать проект, введите команду:

poetry build

Получим такой вывод:

Building 8host-poetry (0.1.0)
  - Building sdist
  - Built 8host-poetry-0.1.0.tar.gz
  - Building wheel
  - Built 8host_poetry-0.1.0-py3-none-any.whl

Будут выведены два файла. Первый – это исходный код sdist, он выводится в файл tar.gz. Второй – скомпилированный пакет wheel, который выводится в файл .whl. И теперь всё готово для публикации пакета Python в PyPI.

4: Публикация пакета Python в PyPI

Poetry по умолчанию публикует проекты в PyPI. Для команды публикации не нужно будет указывать учетные данные, поскольку мы уже установили API токен для авторизации

Для публикации скомпилированного пакета введите:

poetry publish

Вывод будет следующим:

Publishing 8host-poetry (0.1.0) to PyPI
 - Uploading 8host-poetry-0.1.0.tar.gz 100%
 - Uploading 8host_poetry-0.1.0-py3-none-any.whl 100%

Теперь можно проверить опубликованный пакет. Откройте свои проекты PyPI в браузере.

Пакет опубликован, находится в открытом доступе на PyPI, а также доступен как зависимость через Poetry. Опубликованный пакет можно добавить в качестве зависимости в другие проекты Python.

Примечание: Собрать и опубликовать пакет в PyPI можно также и одной командой, добавив следующий флаг в команду publish:

poetry publish --build

Это полезная функция, но ее работа зависит от стадии завершенности вашего проекта.

Подводим итоги

В этом мануале с помощью Poetry мы создали и опубликовали пакет. Также мы создали учетную запись PyPI, настроили аутентификацию API токена с помощью Poetry, затем скомпилировали проект перед его публикацией. Пакет доступен публично как зависимость и может быть включен через Poetry.

Tags: , ,

Добавить комментарий