Як опублікувати свою Python бібліотеку на PyPI

  • 3 февраля, 17:20
  • 3768
  • 0

Робимо так, щоб вашу бібліотеку на Python будь-хто міг встановити за допомогою pip install.

Як опублікувати свою Python бібліотеку на PyPI

Важко уявити програму Python без набору операторів import. Але як опублікувати бібліотеку, щоб її також легко могли імпортувати інші розробники?

Як опублікувати свою Python бібліотеку на PyPI

Завдяки імпортуванню, модулі Python зручно використовувати

У цьому керівництві ми покажемо на прикладі, як створити власну бібліотеку Python, яку можна буде встановити за допомогою менеджера пакетів pip, як інше сторонне рішення. Якщо ваш код може приносити користь, це відмінний спосіб зробити внесок у спільноту Python. 

1. Створюємо елементи бібліотеки

Публікація пакета вимагає знання деяких деталей. У цьому прикладі ми будемо розглядати попередньо опублікований пакет під назвою dist_alx. Щоб вам було зручніше звірятися, ця директорія доступна у вигляді zip-папки в репозиторії на GitHub.

Каталог містить всі необхідні елементи, які повинен мати пакет перед публікацією. Ми будемо використовувати цей приклад як еталон, оскільки всі пакети Python повинні мати однакову структуру. Якщо вам цікаво, що саме робить пакет dist_alx, це пояснено там же в README-файлі.

Кореневий каталог dist_alx містить наступні файли і директорії:

  • setup.py - містить метадані пакета,
  • setup.cfg - конфігураційний файл, який використовується для зберігання налаштувань,
  • підпапку з тим же ім'ям, що і батьківська папка (в даному прикладі dist_alx), де зберігається фактичний код вашого пакета на Python.

Детальніше про зазначені файли можна прочитати в документації бібліотеки setuptools . Приклади змісту файлів в нашому випадку:

setup.py

from setuptools import setup

setup(name='dist_alx',
      version='0.0',
      description='Gaussian and Binomial distributions',
      packages=['dist_alx'],
      author_email='mihajlovic.aleksa@gmail.com',
      zip_safe=False)

setup.cfg

[egg_info]
tag_build = 
tag_date = 0

Будь-яка бібліотека, що публікується на PyPI повинна мати три вищезгадані елементи. Крім цього, пакет повинен виконувати наступні умови:

  • Унікальне ім'я бібліотеки. Ніякі два існуючих пакета Python не можуть однаково називатися.
  • Файл setup.py повинен містити параметри name і packages. Вони також повинні мати те ж ім'я, що і пакет (див. Приклад вище).
  • Параметр version: в разі якщо щось в пакеті змінилося, потрібно змінити і значення version.
  • Файл setup.py повинен мати параметр author_email з адресою електронної пошти для зв'язку. Використовуйте діючий e-mail, це важливо для подальшої реєстрації програми в репозиторії PyPI.

2. Підготовка коду

Як зазначено вище, всередині вкладеної папки повинен знаходитися фактичний код бібліотеки. Якщо ви відкриєте підпапку dist_alx, ви побачите, що вона містить файл _init_.py. За замовчуванням ядро Python шукає файл _init_.py в якості відправної точки при читанні коду. Файл _init_.py пов'язаний з усіма іншими сценаріями Python в папці. Наприклад, в нашому файлі _init_.py, є рядок імпорту from .Gaussiandistribution import Gaussian. Всі .py-файли пов'язані. Варто, перш ніж намагатися написати код пакета, оновити свої знання про класи Python.

3. Створюємо аккаунт PyPI

Більшість загальнодоступних пакетів Python зберігаються в репозиторії PyPI. При установці пакета на свій комп'ютер інструкцією pip, ви фактично завантажуєте його зі сховищ PyPI. Відповідно для публікації нового пакета його потрібно навпаки, завантажити на сервер PyPI. Щоб опублікувати бібліотеку, потрібно завести аккаунт (це безкоштовно). Адреса електронної пошти повинна бути та сама, що всередині setup.py в параметрі author_email.

Як опублікувати свою Python бібліотеку на PyPI

Скріншот вікна реєстрації в репозиторії PyPI

4. Публікуємо бібліотеку

Публікація здійснюється з командного рядка або терміналу. Команди ідентичні в Windows і Linux.

Для публікації нам буде потрібно встановити дві бібліотеки - setuptools і twine:

pip install setuptools

pip install twine

Переходимо до батьківського каталогу.

Розгортається пакет запустивши setup.py:

python setup.py sdist

Зверніть увагу, що тепер у батьківській папці будуть створені дві нові директорії ( egg-info і dist).

Як опублікувати свою Python бібліотеку на PyPI

Тепер за допомогою twine розгортається пакет на PyPI:

twine upload dist/*

Тут потрібно вказати своє ім'я користувача та пароль PyPI.

Вуаля! Пакет розміщений на сервері і готовий до використання!

Переходимо в обліковий запис на PyPI, йдемо в розділ Your projects. Якщо все в порядку, ви побачите бібліотеку.

Як опублікувати свою Python бібліотеку на PyPI

Зверніть увагу, що PyPI не підтримує на сайті символ підкреслення в іменах файлів. Тому dist_alx відображається як dist-alx. Однак це не впливає на використання бібліотеки - при подальшому імпорті ми будемо вводити, як і задумано, dist_alx.

5. Використовуємо

Переходимо до улюбленого клієнта Python (наприклад, Jupyter ) і встановлюємо пакет за допомогою pip. Імпортуємо і користуємося в своє задоволення!

Як опублікувати свою Python бібліотеку на PyPI

Висновок

Перш ніж розміщувати пакет на головному сервері, опублікуйте його спочатку на тестовому сервері PyPI. Отже, послідовність створення бібліотеки Python наступна:

  1. Створення необхідних елементів пакету, перевірка значень параметрів.
  2. Підготовка коду пакету.
  3. Створення облікового запису PyPI (якщо його ще не було).
  4. Публікація пакета на PyPI.
  5. Тестування: pip-установка, імпорт і запуск модуля.

Джерело перекладу


0 комментариев
Сортировка:
Добавить комментарий