Персональные инструменты
Вы здесь: Главная Документация Рецепты Создание яиц и пакетов c paster

Создание яиц и пакетов c paster

Автор: Администратор сайта Последнее изменение: 2010-05-08 13:37

Как используя команду 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/

Действия с Документом