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 Namespace Package Name (Name of outer namespace package) ['vs']: Package Name (Name of the inner namespace package) ['policy']: Version (Version number for project) ['1.0']: Description (One-line description of the project) ['']: Policy for www.veit-schiele.de Register Profile (Should this package register a GS Profile) [False]: True Long Description (Multi-line description (in ReST)) ['']: Policy for www.veit-schiele.de Author (Name of author for project) ['']: Veit Schiele Author Email (Email of author for project) ['']: kontakt@veit-schiele.de Keywords (List of keywords, space-separated) ['']: Project URL (URL of the homepage for this project) ['http://svn.plone.org/svn/collective/']: https://dev.veit-schiele.de/svn/pen/vs.policy Project License (Name of license for the project) ['GPL']: Zip-Safe? (Can this project be used as a zipped egg? (true/false)) [False]: Zope2 Product? (Are you creating a product for Zope2/Plone or an Archetypes Product?) [True]: …
Hiermit werden folgende Dateien erzeugt:
- setup.py
- enthält Anweisungen für Setuptools, Distribute oder Buildout, wie die Paketdistribution verwaltet werden soll.
- setup.cfg
- enthält zusätzliche Konfigurationsinformationen, in diesem Fall über das verwendete ZopeSkel-Template.
- *.egg
- ZopeSkel lädt ein paar zusätzliche Eggs herunter um sog. local commands zu unterstützen.
- README.txt
Dokumentation des Pakets.
Soll das Paket im PyPI veröffentlicht werden, wird der Inhalt zusammen mit dem Wert für long_description in der setup.py-Datei als HTML gerendert.
- docs/
Enthält zusätzliche Dokumentation einschließlich der Software-Lizenz und Änderungshistorie.
- HISTORY.txt
- wird verwendet für die Change Log-Einträge im PyPI.
- vs.policy.egg-info/
enthält Laufzeitinformationen für Setuptools und Distribute, die aus den Dateien setup.py und setup.cfg generiert werden.
Das Verzeichnis sollte nicht unter Versionskontrolle gestellt werden.
- vs
das Namespace-Package, das in der __init__.py-Datei eine Methode für Setuptools und Distribute bereitstellt.
- vs/policy
Das Wurzelverzeichnis des Paketes selbst.
- vs/policy/__init__.py
Datei, die dieses Paket als Zope2-Produkt initiiert.
Ggf. wird diese Datei auch benötigt um Archetypes-Artikeltypen zu erstellen. Siehe hierzu Initialisierung und Hinzufügen-Rechte.
- vs/policy/configure.zcml
- Die wesentliche Zope-Konfigurationsdatei für unser Paket. Diese wird automatisch von Plone beim Starten der Instanz geladen.
- vs/policy/tests.py
- enthält ein Gerüst für Integrationstests. Wir werden dieses später durch unsere eigenen Tests ersetzen.
Nachdem das Python-Egg im src-Verzeichnis erstellt worden ist, sollten wir es noch in der buildout.cfg-Datei eintragen. Der instance-Abschnitt übernimmt die Eggs:
[buildout]
…
eggs =
vs.policy
develop =
src/vs.policy
…
[instance]
eggs =
…
${buildout:eggs}
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.
