Установка сторонних продуктов
Как устанавливать новые пакеты
Способ установки сторонних продуктов зависит от того, является ли пакет "яйцом" или традиционным Zope 2 продуктом.
Установка яиц
Пока релиз пакета есть на PyPi или еще где-нибудь, buildout может скачать и установить его, включая любые явно указанные зависимости. Просто перечислите егг-пакет и возможно его версию (в противном случае вы получите последнюю доступную версию) в опции eggs:
[buildout]
...
eggs =
elementtree
borg.project>=1.0b1,<2.0dev
Если вы хотите, чтобы buildout искал в отличном от PyPi месте, вы можете добавить URL по которому можно загрузить пакет в find-links. Фактически, у нас уже есть пример этого: elementree может быть найден на http://effbot.org/downloads, а не в PyPi. Итак, у нас есть:
[buildout]
...
find-links =
http://dist.plone.org
http://download.zope.org/ppix/
http://download.zope.org/distribution/
http://effbot.org/downloads
eggs =
elementtree
Мы также перечислили несколько мест загрузки Zope и Plone яиц.
Мы снова перезапускаем buildout для вступления изменений в силу:
$ ./bin/buildout
Егг-пакеты в разработке
Если ваш пакет еще не перешел в стадию релиза, или вы хотите отслеживать его в Subversion, сделайте чекаут в директрию src/. Убедитесь, что вы загрузили полностью пакет, включая файл setup.py в корне. Например, чтобы получить последнюю версию plone.portlets нужно:
$ cd src $ svn co https://svn.plone.org/svn/plone/plone.portlets/trunk plone.portlets
Потом добавьте следующее в buildout.cfg:
[buildout]
...
eggs =
...
plone.portlets
develop =
src/plone.portlets
Заметьте, что:
- Опция develop содержит относительный путь к месту, где находится исходный код егг-пакета. Buildout ожидает найти подходящий файл setup.py в этой директории.
- Егг-пакеты в разработке всегда имеют приоритет над обычными егг-пакетами.
- Чтобы пакет был установлен, вам по-прежнему надо добавить его имя в опцию egg.
- При переопределении егг-пакета, поставляемого с Plone, вам может понадобиться указать его в секции eggs части [plone]:
[buildout]
...
develop =
src/plone.portlets
...
[plone]
recipe = plone.recipe.plone
eggs =
plone.portlets
Это нужно, так как в plone.recipe.plone явно определены версии используемых пакетов для обеспечения правильной работы Plone.
Рецепты buildout (такие как plone.recipe.plone) распространяются в виде егг-пакетов. Вы можете использовать a development egg of a recipe перечислив его в опции develop. Нет необходимости указывать его явно в опции eggs, так как на него ссылается опция recipe соответствующей части.
Установка традиционного Zope 2 продукта
Распаковка пакета в папку products внутри buildout - это самый простой способ поставить традиционный Zope 2 продукт.
Однако, этот подход затрудняет распространение вашего проекта и разделение его с другими разработчиками. Естественно лучше позволить билдауту загружать и устанавливать пакеты самостоятельно. Вы можете это сделать с помощью секции [productdistros] в buildout.cfg. Например, вы можете установить продукт c именем ExampleProduct и набор продуктов с именем ExampleProductBundle:
[productdistros]
recipe = plone.recipe.distros
urls =
http://example.com/dist/ExampleProduct-1.0.tgz
http://example.com/dist/ExampleProductBundle-1.0.tgz
nested-packages =
ExampleProductBundle-1.0.tgz
version-suffix-packages =
Заметьте, что наш вымышленный ExampleProductBundle распространяется в виде единой директории, содержащей несколько продуктов в поддиректориях, поэтому мы перечисляем его в nested-packages.
Как всегда, если вы поменяли buildout.cfg, вы должны перезапустить buildout:
$ ./bin/buildout
Управление ZCML файлами
[buildout]
...
eggs =
elementtree
borg.project
...
[instance]
...
zcml =
borg.project
Вы можете использовать следующий синтаксис, если надо загрузить overrides.zcml или meta.zcmlес:
zcml =
some.package
some.package-overrides
some.package-meta
Продукты политики
Многие разработчики предпочитают создавать единый продукт политики (известные также как продукт развертывания), которые организуют различные зависимости. Если у вас есть такой продукт, вы можете захотеть включить зависимости прямо из продукта политики в configure.zcml таким образом:
<configure xmlns="http://namespace.zope.org/zope">
<include package="borg.project" />
</configure>
В этом случае, вам по-прежнему нужно создать один слаг (используя опцию zcml как показано выше) для продукта политики.

Предыдущий: Cоздание дефолтного файла buildout
