Содержание страницы
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. Отображение пакета PyPI¶PyPI 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 выведет предупреждение, если с синтаксисом что-то не так.