Создание простого пакета Python
Last updated
Was this helpful?
Last updated
Was this helpful?
Оригинал статьи .
Я зарегистрировался на GitHub после получения степени доктора философии в 2016 году. Одним из первых репозиториев, которые я создал, был перенос части моего кода MATLAB для генерации реализаций на python. По сути, это был просто README.md
со ссылкой на источники используемых алгоритмов и единственный файл с именем fbm.py
.
Несколько месяцев назад я заметил, что набрал несколько звезд и клонируется пару раз в неделю. Я подумал, что если люди будут заинтересованы в этом коде, я должен попытаться реорганизовать его и создать реальный пакет python, который любой мог бы загрузить и реализовать с помощью pip. Вот что я сделал. Пакет называется fbm и доступен на .
Я пройдусь по шагам, которые сделал здесь. После рефакторинга кода и добавления некоторых полезных функций структура каталогов пакета выглядела следующим образом. Единый модуль с небольшим набором юнит-тестов в папке tests.
Первым шагом является создание файла с именем setup.py
в каталоге верхнего уровня проекта, который импортирует функцию настройки из модуля setuptools. Пакет setuptools всегда следует использовать в пользу distutils.
Это минимум setup.py
. Несколько примечаний:
version - следует выбирать на основе руководства [Semantic Versioning] (Семантическое управление версиями). Это не обязательно, но это хорошая практика.
description - должно быть несколько слов, описывающих пакет.
author_name - это ваше имя.
author_email - это ваш емэйл (необходимо указать, если вы укажете свое имя).
url - ссылка на ваш проект. Я использовал URL-адрес репозитория.
Если include_package_data имеет значение True
, вам нужно будет создать файл MANIFEST.in
на верхнем уровне вашего проекта. Внутри файла вы захотите включить в пакет любые дополнительные релевантные файлы, например:
Собранный вместе каталог вашего пакета может выглядеть примерно так.
Чтобы создать исходный дистрибутив вашего проекта, выполните команду.
Если ваш проект представляет собой чистый Python, вы можете создать универсальный дистрибутив wheel.
Обе эти команды создадут файлы .tar.gz
и .whl
соответственно в папке dist/
.
Затем вы должны создать и открыть файл ~/.pypirc
в текстовом редакторе. Это должно выглядеть так, если ваши учетные данные pypi и testpypi записаны на:
Вы должны быть предельно осторожны с этим файлом, так как вы храните здесь свои личные учетные данные в виде открытого текста.
Чтобы загрузить:
Вы должны увидеть, что страница была создана по адресу https://testpypi.python.org/pypi/packagename/. Чтобы проверить, что это сработало:
Если все сработало, вы можете запустить эту последнюю команду, чтобы загрузить свой пакет в настоящий pypi (обрабатывает регистрацию автоматически), заменив имя пакета и версию на правильные значения:
Все готово, и теперь вы можете увидеть свой пакет на pypi!
Если вы планируете поддерживать свой проект, вам нужно будет загрузить новую версию, когда она будет готова. Не забудьте увеличить номер версии в setup.py
перед сборкой новых дистрибутивов. Когда новый исходный дистрибутив и файлы wheel будут готовы, просто запустите:
И помните, что всегда полезно сначала использовать testpypi.
name - должно быть имя пакета, которое еще не занято. Вы можете легко выполнить поиск в , чтобы узнать, занято ли желаемое имя пакета.
long_description - можно более подробное описание. В этом примере вы можете видеть, что мы читаем файл README.rst
. Обратите внимание, что pypi обработает файлы rst () и импортирует его на страницу, созданную для пакета.
license - это лицензия, которую вы хотите использовать для своего программного обеспечения. Если вы не уверены, вам следует обратиться к .
packages - вы можете получить список пакетов вручную или использовать функцию из setuptools.
zip_safe - смотрите . Если вы не уверены, установите значение False
.
Здесь вы можете указать ряд . Вы должны использовать install_requires, если ваш пакет имеет какие-либо зависимости от других пакетов. Если вы хотите включить README, LICENSE или другие файлы, отличные от Python, вам также следует использовать аргумент include_package_data как True
. Вы также можете использовать аргумент classifiers, чтобы указать для вашего пакета.
Вы также захотите изменить файл .gitignore
, чтобы игнорировать некоторые файлы, которые будут созданы при сборке пакета. Вот как выглядит мой файл игнорирования. Файл .env
предназначен для работы в . Файл .tox
предназначен для , который автоматизирует тестирование на основе виртуального окружения.
Чтобы получить пакет на pypi, вам необходимо зарегистрировать аккаунт. Вы должны создать учетную запись на и , что позволит вам протестировать свою загрузку, прежде чем размещать настоящую вещь на pypi. Вам также следует установить пакет twine с помощью команды pip install twine
.
Мы будем использовать для тестирования загрузки нашего пакета. Сначала нам нужно зарегистрироваться на тестовом сервере. Чтобы зарегистрировать проект на testpypi:
Выбор лицензии