Erstellen eines Site-Policy-Produkts
Zum Erstellen eines Python-Eggs, das ein Zope2-Produkt enthält, verwenden wir das ZopeSkel-Template plone:
$ cd src $ paster create -t plone Enter project name: vs.policy Variables: egg: vs.policy package: vspolicy project: vs.policy Enter namespace_package (Namespace package (like plone)) ['plone']: vs Enter package (The package contained namespace package (like example)) ['example']: policy Enter zope2product (Are you creating a Zope 2 Product?) [False]: True Enter version (Version) ['0.1']: Enter description (One-line description of the package) ['']: vsPolicy Enter long_description (Multi-line description (in reST)) ['']: Policy product for www.veit-schiele.de … Enter zip_safe (True/False: if the package can be distributed as a .zip file) [False]: False
Nachdem das Python-Egg im src-Verzeichnis erstellt worden ist, sollten wir es noch in der buildout.cfg-Datei eintragen:
[buildout]
…
eggs =
vs.policy
develop =
src/vs.policy
…
[instance]
zcml =
vs.policy
Mit der Angabe für zcml erzeugt Buildout in der Instance einen sog. zcml-slug. In unserem Fall wird also im Verzeichnis parts/instance/etc/package-includes/ die Datei 001-vs.policy-configure.zcml erzeugt mit folgendem Einzeiler:
<include package="vs.policy" file="configure.zcml" />
Damit dies geschieht, wird buildout erneut aufgerufen:
$ ./bin/buildout -No
Um zu Testen, ob das Python-Egg in der Instanz zur Verfügung steht, rufen wir den Python-Interpreter zopepy auf:
$ ./bin/zopepy >>> from vs import policy
Da kein Fehler für den Import ausgegeben wurde, scheint das Egg geladen zu werden, und der Python-Interpreter kann mit Strg-D (unter Windows Strg-Z) wieder verlassen werden.
Alternativ kann auch die Instanz gestartet werden mit ./bin/instance; anschließend sollten sich im Zope Management Interface → Control_Panel → Products das vs.policy-Produkt finden.

