Direkt zum Inhalt | Direkt zur Navigation

Benutzerspezifische Werkzeuge
Anmelden
Sektionen
Sie sind hier: Startseite Erstellen eines Site-Policy-Produkts

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.

Artikelaktionen