Создание яиц и пакетов c paster
Как используя команду paster быстро и просто создать пакеты базовой структуры?
В Zope 2.10 вы можете создавать Zope 2 продукты, которые инсталлируется в $PYTHONPATH с любым пространством имен, не только Products. Вы даже можете создавать вообще не Zope 2 пакеты, и ваши продукты могут зависеть от них.
Zope и Plone переходят на python "яйца"(eggs) - независимый набор кода и расширений, который может управлять самостоятельно зависимостями и содержат полезные метаданные. Чтобы ваш код поддерживал это, вы должны сделать заготовку.
Создавать заготовки проще использую ZopeSkel -набор PasteScript шаблонов для команды paster, которая способна генерировать заготовки для ваших продуктов.
Установка Paster и ZopeSkel
Для того, чтобы установить ZopeSkel, вы должны использовать утилиту easy_install. Если она не установлена в вашей системе, то загрузить и запустите ez_setup.py:$ wget peak.telecommunity.com/dist/ez_setup.py $ python ez_setup.py
Потом нужно установить ZopeSkel и все зависимости:
$ easy_install -U ZopeSkel
Это команда установит paster в директорию, в которую установлен python. Обратите внимание на вывод во время установки - там будет указана директория установки ZopeSkel.
Создание "яиц"
После установки ZopeSkel вы можете создавать различные заготовки для ваших будущих продуктов. Запустите:
$ paster create --list-templates Available templates: basic_namespace: A project with a namespace package basic_package: A basic setuptools-enabled package nested_namespace: A project with two nested namespaces. paste_deploy: A web application deployed through paste.deploy plone: A Plone project plone2_theme: A Theme for Plone 2.1 & Plone 2.5 plone3_theme: A Theme for Plone 3 plone_app: A Plone App project
Чтобы создать стандартный "одноуровневый" шаблон, наберите:
$ paster create -t plone
Ответьте на вопросы и в итоге вы получите новую директорию необходимой типовой структуры и с метаданными.
Чтобы создать двухуровневый пакет, например, plone.app.something, вы можете ввести эту команду:
$ paster create -t plone_app
Или, если вы хотите создать новую тему для Plone, основанную на продукте DIYPloneStyle, используйте:
$ paster create -t plone3_theme
Добавление "яиц" в Zope инстанс
Вы можете использовать setup.py в только что созданном пакете для того, чтобы установить продукт или загрузить его в Cheeseshop. Обратитесь к документации по setuptools, чтобы узнать подробности. Чтобы узнать больше о том, как это работает, читайте тьюториал по buildout.Оповещение Zope о новых пакетах
При запуске Zope сканирует директорию Products (или products в случае установки Plone через UnifiedInstaller). Для остальных директорий это не работает (поиск пакетов в $PYTHONPATH скорее всего был бы не очень хорошей идей).
Если вы создали обычный python пакет, который вы хотите использовать в другом своем продукте или пакете, вы не должны ничего больше делать. Zope его найдет при старте.
Если вам нужен продукт (например, вы ответили "Да" на вопрос paster: "Is this a Zope 2 product?) или вам нужно загрузить .zcml файлы при старте Zope, вы должны выполнить одно из следующих действий:- В $INSTANCE_HOME/etc/package-includes создать файл с именем my.package-configure.zcml. Этот файл должен содержать одну строчку:<include package="my.package" />. Эта директива говорит Zope, что он должен найти пакетmy.package в $PYTHONPATH и выполнить его файл configure.zcml
- Добавить директиву <include package="my.package" /> в configure.zcml любого продукта в каталоге Products. Five отвечает за то, чтобы все ZCML для всех продуктов в Products/ запускались автоматически и поэтому ваш продукт также будет загружен.
- Добавить директиву <include package"my.package" /> в etc/site.zcml, который также загружается при старте Zope.
Для того, чтобы узнать как управлять этим с помощью zc.buildout, обратитесь к учебнику по buildout.
Перевод статьи http://plone.org/documentation/kb/use-paster/

