Документация Python неофициальный перевод
Содержание страницы

7. Загрузка пакетов в индекс пакетовUploading Packages to the Package Index

Индекс пакетов Python (PyPI) не только хранит информацию о пакете, но и данные пакета, если того желает автор. Команда distutils upload отправляет файлы дистрибутива на PyPI.

Команда вызывается сразу после сборки одного или нескольких файлов дистрибутивов. Например, команда

python setup.py sdist bdist_wininst upload

вызовет загрузку исходного дистрибутива и установщика для Windows на PyPI. Обратите внимание, что они будут загружены, даже если были собраны при предыдущем вызове setup.py, но загружаются только те дистрибутивы, которые указаны в командной строке вызова, включающего команду upload.

Команда upload использует имя пользователя, пароль и URL репозитория из файла $HOME/.pypirc (см. раздел Файл .pypirc для получения дополнительной информации об этом файле). Если команда register ранее вызывалась в той же команде, и пароль был введён в приглашении, upload повторно использует введённый пароль. Это полезно, если вы не хотите хранить пароль в открытом виде в файле $HOME/.pypirc.

Можно указать другой сервер PyPI с помощью опции --repository=*url*:

python setup.py sdist bdist_wininst upload -r http://example.com/pypi

См. раздел Файл .pypirc для получения дополнительной информации об определении нескольких серверов.

Можно использовать опцию --sign, чтобы указать upload подписывать каждый загружаемый файл с помощью GPG (GNU Privacy Guard). Программа gpg должна быть доступна для выполнения в системе PATH. Также можно указать, какой ключ использовать для подписи, с помощью опции --identity=*name*.

Другие опции upload включают --repository= или --repository=, где url – это URL сервера, а section – имя раздела в $HOME/.pypirc, и --show-response (которая отображает полный текст ответа от сервера PyPI для помощи в отладке проблем загрузки).

7.1. Отображение пакета PyPIPyPI package display

Поле long_description играет особую роль на PyPI. Оно используется сервером для отображения домашней страницы зарегистрированного пакета.

Если для этого поля используется синтаксис reStructuredText, PyPI разберёт его и отобразит домашнюю страницу пакета в формате HTML.

Поле long_description можно прикрепить к текстовому файлу, расположенному в пакете:

from distutils.core import setup

with open('README.txt') as file:
    long_description = file.read()

setup(name='Distutils',
      long_description=long_description)

В этом случае README.txt – это обычный текстовый файл reStructuredText, расположенный в корне пакета рядом с setup.py.

Чтобы предотвратить регистрацию некорректного содержимого reStructuredText, можно использовать программу rst2html, которая предоставляется пакетом docutils, и проверить long_description из командной строки:

$ python setup.py --long-description | rst2html.py > output.html

docutils выведет предупреждение, если с синтаксисом что-то не так.