Публикация пакета на PyPi

Публикация пакета на PyPi
  • Опубликовано:
  • Теги: python

Решил как-то опубликовать приложение на PyPi и теперь периодически его поддерживаю. Пока процесс не довел до автоматизма, каждый раз заглядываю в документацию, а там не очень удобно искать, поэтому сделаю краткий чеклист.

Оглавление

0. Изменение пакета

Пока ведется разработка, пакет лучше не устанавливать в окружение, а сделать ссылку на него из папки проекта:

pip install -e .

1. Создание (редактирование) setup.py

Основное предназначение этого файла — выполнение глобальной функции setup(). Кроме того, здесь задаются параметры, описывающие проект. Среди прочих, обычно приходится менять номер версии.

Когда все готово, пробуем собрать пакет:

python setup.py bdist_wheel

Затем попробуем установить его в тестовом виртуальном окружении:

virtualenv test_env
source ./test_env/bin/activate
pip install dist/my-project.whl

2. Регистрация проекта

В файле .pypirc должны быть данные для авторизации:

[distutils] 
index-servers=pypi

[pypi] 
repository=https://pypi.python.org/pypi 
username=ИМЯ_ПОЛЬЗОВАТЕЛЯ
password=ПАРОЛЬ

Загружаем пакет с помощью twine

twine upload dist/*

Но если в папке dist лежат также предыдущие пакеты, тогда pypi выдаст ошибку, мол, уже есть такие. Допустим, наша новая версия — 1.0.3 и имена файлов такие (для разных версий Python):

  • my-project-1.0.3-py2-none-any.whl
  • my-project-1.0.3-py3-none-any.whl

тогда загружаем только их:

twine upload dist/*-1.0.3-*

3. Загружаем в репозиторий

Разумеется, наш проект также хранится в репозитории на github или bitbucket, поэтому надо загрузить и туда.

Также можно обновить версию git tag -a '1.0.3' и загрузить ее git push origin 1.0.3

4. Ссылки