Питоновские пакеты отличный способ повторного использования кода. Если один и тот же код вы уже в третий раз копируете в очередной проект, самое время вынести этот код в отдельный модуль. А еще лучше будет собрать питоновский пакет, который потом будет устанавливаться одной командой.
Например если мы выложили пакет на 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/собираем-питоновский-пакет-и-выклады/