Загрузка собственного пакета Python в PyPI (индекс пакетов Python)
Иногда вы пишете очень полезный код и хотите поделиться им, чтобы помочь другим? С Python это очень просто!
В этом посте я пошагово расскажу, как загрузить собственный пакет в PyPI, чтобы поделиться своим потрясающим кодом со всем миром!
Этот пост посвящен Linux / Mac OS, если вы используете Windows, могут быть некоторые изменения.
Шаг 1. Создание учетной записи PyPI
Первый шаг почти очевиден, вам нужно создать учетную запись в PyPI. Вы можете создать свою учетную запись здесь.
Шаг 2. Загрузите необходимые пакеты
Перед тем, как начать изменять папку нашего проекта, нам нужно скачать все пакеты, которые мы будем использовать. Пакеты:
- Setuptools: Библиотека процесса разработки Этот пакет предназначена для создания и распространения пакетов Python.
- Wheel: пакет Wheel создает файл .whl, который можно установить напрямую с помощью команды
pip install
. - Twine: Пакет Twine обеспечивает безопасное, аутентифицированное и проверенное соединение между вашей системой и PyPI через HTTPS.
- Tqdm: используется внутри Twine.
sudo python -m pip install setuptools sudo python -m pip install wheel sudo python -m pip install tqdm sudo python -m pip install twine
Шаг 3: Создание файла setup.py
В основном каталоге вашего проекта python вы создадите файл python с именем setup.py, этот файл содержит все метаданные вашего пакета.
Вот базовый пример установки. ру:
import setuptools with open("README.md", "r") as fh: long_description = fh.read() setuptools.setup( name='nagoya', version='0.0.1', author="Nagoya Foundation", author_email="[email protected]", description="The best python package in the world", long_description=long_description, long_description_content_type="text/markdown", url="Your github URL", packages=["yourpackage"] or setuptools.find_packages(), install_requires=["required_packages"], classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], )
Ps: строки, выделенные жирным шрифтом и курсивом, являются необязательными.
Если у вас очень хороший README, я рекомендую использовать его как длинное описание.
Здесь много параметров настройки, и вы должны прочитать документацию здесь.
Шаг 4: Компиляция пакета
В папке вашего пакета запустите команду
python setup.py bdist_wheel
После этого у вас будет примерно такая папка:
- Сборка. Информация о сборке вашего пакета.
- Dist: Эта папка будет содержать все файлы .whl из ваших сборок.
- * .egg-info: содержит скомпилированный байт-код, ссылки зависимостей и будет использовать информацию из setup.py при запуске тестов.
Шаг 5. Установка локально (необязательно)
Этот шаг не является обязательным, но настоятельно рекомендуется протестировать пакет перед его публикацией. Чтобы установить пакет прямо из папки, вы должны запустить файл из папки dist:
python -m pip install dist/nagoya-0.0.1-py2-none-any.whl
Шаг 6. Загрузите в PyPI
Режим 1:
Когда мы загружаем пакет в PyPI, команда читает файл с именем .pypirc. Итак, первый шаг к загрузке - это создать этот файл в вашем домашнем каталоге (~ /).
Файл будет иметь следующий вид:
[distutils] index-servers=pypi [pypi] repository = https://upload.pypi.org/legacy/ username = nagoya-foundation
PS: Измените nagoya-foundation для своего имени пользователя PyPI.
После создания нашего файла .pypirc нам нужно только запустить указанную выше команду, выбрав, какой. whl мы хотим загрузить.
python -m twine upload dist/nagoya-0.0.1-py2-none-any.whl
Вы также можете использовать dist / *, в этом случае он проверит, какой. whl отсутствует в вашем репозитории PyPi.
Режим 2:
вместо создания файла. pypirc можно передать репозиторий, пользователя и пароль в качестве параметров:
python -m twine upload -r "repository" -u "username" -p "password" dist/nagoya-0.0.1-py2-none-any.whl
Этот режим лучше работает с методами CI / CD.
Подсказки:
- Есть еще один тип PyPI, который используется для пакетов тестов. Вы можете использовать этот тестовый PyPI для тестирования всего потока вашего пакета перед запуском официального в продакшн. Я думаю, что было бы неплохо использовать его с потоком CI / CD, потому что вы можете более комфортно использовать свои модульные тесты, интеграционные тесты и т. Д.
- После выпуска версии вашего пакета вы можете удалить ее. Но это НЕ очень хорошо, потому что даже если вы удалите версию, ее индекс останется сохраненным в PyPI, из-за этого невозможно будет снова загрузить ту же версию.
Заключение
Мы увидели, что поделиться нашим кодом с сообществом легко, и если что-то поможет вам в решении проблемы, это может помочь и другим. Давайте поделимся нашим кодом и поможем сообществу расти еще больше.
Ссылка на репозиторий Github с файлом примера: https://github.com/nagoya-foundation/nagoya-py-package