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