
Решил как-то опубликовать приложение на 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