Cоздание нового пакета
Создание традиционного Zope 2 продукта
Положите традиционный Zope 2 продукт в директорию products/ и перезапустите Zope. Никаких дополнительных действия больше не нужно. Как было объяснено раньше, размещенные здесь продукты будут автоматически обнаружены при старте и файлы configure.zcml будут также выполняться автоматически.
Создание егг-пакета
Если вы используете традиционные продукты, вы не получаете дополнительные преимущества егг-пакетов такие, как автоматическое управление зависимостями, распространения через Cheese Shop и вложенное пространство имен.Самый простой пусть создания нового егг-пакета - использование команды paster, которую мы уже использовали для создания buildout. Для создания базового пакета с пространством имен верхнего уровня и специфичным именем, зайдите в директорию src и выполните:
$ cd src $ paster create -t plone myorg.mypackage
Вам будет задана серия вопросов. Убедитесь, что пространство имен пакета и имя пакета соответствуют имени яйца. В нашем случае, пространство имен - myorg, а имя пакета - mypackage. Ответьте False на вопрос является ли ваш пакет "zip safe" и введите остальные метаданные.
Теперь у вас есть:
- Файл setup.py который содержит введенные вами метаданные
- Пакет в myorg.mypackage/myorg/mypackage. Ваш исходный код будет здесь.
- "Cкелет" файлов configure.zcml, tests.py и некоторых других.
- Немного общей документации в myorg.mypackage/docs.
Конечно, вы должны добавить этот пакет в ваш buildout. В buildout.cfg у вас может быть:
[buildout]
...
eggs =
...
myorg.mypackage
develop =
src/myorg.mypackage
Пока вы не планируете подключать этот пакет из какого-нибудь другого (или использовать автоматическую ZCML загрузку, которой далее), вы скорее всего должны добавить ZCML слаг:
[instance]
...
zcml =
myorg.mypackage
Не забудьте перезапустить buildout:
$ ./bin/buildout
Автоматическая загрузка ZCML для вашего пакета
Если вы не планируете подключать ваш пакет из другого пакета, вы все равно можете не использовать ZCMl cлаг в buildout.cfg. Это позволяет избежать повторения имени пакета в файле конфигурации, о котором легко может забыть начинающий интегратор. Начиная с Plone 3.3, вы можете обеспечить включение ZCMl пакета добавлением следующего кода в setup.py:
setup(...
entry_points="""
...
[z3c.autoinclude.plugin]
target = plone
...)
"""
Для детальной информации обратитесь к документации setuptools о динамическом обнаружении сервисов и плагинов .
Указание зависимостей
Если ваш пакет имеет явные зависимости, вы можете перечислить их в setup.py. Таким образом, buidlout автоматически загрузит и установит их. Зависимости перечисляются в аргументе install_requires метода setup(). По умолчанию, здесь есть setuptools, так как нам необходима поддержка пространства имен пакета. Вы можете изменить эту часть следующим образом, если хотите добавить sqlalchemy 0.3 (но не 0.4) и драйвер MySQL-Python:
install_requires=[
'setuptools',
'sqlalchemy>=0.3,<0.4dev',
'MySQL-Python',
],
Загрузка яйца в Cheese Shop
Если вы хотите поделиться своим пакетом с Python сообществом и сделать легкой его установку с помощью инструментов подобных buildout и easy_install, вы можете загрузить пакет в Cheese Shop.
Прежде чем сделать это, вы должны:
- Сделать коммит последних изменений и присвоить тег релизу в системе контроля версий, если необходимо.
- Удалить(временно) файл setup.cfg: это сделает пакет development release.
- Убедиться, что номер версии правильный. Используйте общепринятые соглашения для версий, например, "1.0b2" для второй беты версии 1.0, или "2.1.3rc1" для первого релиз-кандидата версии 2.1.3
- Если вы используете Mac OS X, запустите сначала export COPY_EXTENDED_ATTRIBUTES_DISABLE=true в консоле - иначе, яйцо будет содержать вилки ресурсов Mac OS X, которые могут доставить проблемы пользователям Windows.
После того, как все будет готово, выполните следующую команду в директории пакета (например src/myorg.mypackage):
$ python setup.py egg_info -RDb "" sdist register upload
Вам будет предложено создать Chees Shop аккаунт, если у вас еще его нет. Вы можете выполнять загрузка каждый раз, когда вы пожелаете зарелизить новую версию.

Предыдущий: Установка сторонних продуктов
