Собираем питоновский пакет и выкладываем на pypi

Jun 20, 2016 23:37


Питоновские пакеты отличный способ повторного использования кода. Если один и тот же код вы уже в третий раз копируете в очередной проект, самое время вынести этот код в отдельный модуль. А еще лучше будет собрать питоновский пакет, который потом будет устанавливаться одной командой.


Например если мы выложили пакет на github, то установить его можно так (django-cleanup в данном случае пример названия пакета):

pip install -e git+git://github.com/un1t/django-cleanup.git#egg=django-cleanup

А если мы залили его на pypi.python.org, то установка будет еще проще:

pip install django-cleanup

Структура пакета

Рассмотрим структуру простого пакета на примере django-cleanup.

django_cleanup/ # папка с модулем
__init__.py
models.py
MANIFEST.in
README.markdown
setup.py

setup.py - отвечает за сборку и установку пакета. Обязательные поля - name, version и url. Можно смело копировать пример в свой пакет, заменив нужные значения. Подробнее об этом файле можно прочитать в документации.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from setuptools import setup, find_packages

setup(
name = 'django-cleanup',
version = '0.1.5',
packages = find_packages(),
requires = ['python (>= 2.5)', 'django (>= 1.3)'],
description = 'Deletes old files.',
long_description = open('README.markdown').read(),
author = 'Username',
author_email = 'Username@gmail.com',
url = 'https://github.com/un1t/django-cleanup',
download_url = 'https://github.com/un1t/django-cleanup/tarball/master',
license = 'MIT License',
keywords = 'django',
classifiers = [
'Environment :: Web Environment',
'Framework :: Django',
'Intended Audience :: Developers',
'Programming Language :: Python',
],
)

MANIFEST.in - показывает какие дополнительно файлы должны быть включены в дистрибутив, в нашем случае это README.markdown.

include README.markdown

README.markdown - надо сказать что в питоне принято писать ридми в формате RST, т.е. в идеале должно быть README.rst, но мне markdown как-то привычней.

Проверка пакета

После того как создали вышеуказанню структуру пакета неплохо бы проверить, будет ли вообще этот пакет устанавливаться. Ведь можно допустить элементарные синтаксические или другие ошибки. Например все это у нас будет храниться в папке $HOME/dev/lib/django-cleanup/

Соотвественно мы можем установить наш пакет так

pip install -e $HOME/dev/lib/django-cleanup/

и удалить

pip uninstall django-cleanup

Загрузка на PYPI

Если у вас еще нет учетной записи на pypi.python.org, вам нужно зарегистрироваться.

Регистрируем пакет:

python setup.py register

Собираем дистрибутив и загружаем его:

python setup.py sdist upload

Если все прошло гладко то, после этого уже можно ставить свой пакет через pip или easy_install.

Если что-то не сработало или пошло не так, берите любой пакет с того же pypi и смотрите как он устроен.

http://ishalyapin.ru/собираем-питоновский-пакет-и-выклады/

python, pip, open source, coding

Previous post Next post
Up