Creare un nuovo pacchetto
medio
Aggiungere un nuovo pacchetto personalizzato non è molto diverso dall'installare un pacchetto estensione.
Creare un prodotto Zope 2 classico
Per creare un prodotto Zope 2 classico, collocalo nella cartella products/ di primo livello e riavvia Zope. Non dovrebbe essere necessario fare altro. Come precedentemente illustrato, i prodotti sistemati qui saranno automaticamente trovati allo start-up, e i loro file configure.zcml saranno eseguiti automaticamente.
Creare un egg
Chiaramente, se stai usando dei prodotti, non potrai beneficiare delle funzioni aggiuntive degli egg, inclusa la gestione automatica delle dipendenze, la distribuzione via Cheese Shop e i nested namespace.
Il modo più semplice per creare un nuovo egg è di usare il comando paster, che abbiamo già utilizzato per creare il buildout. Per creare un nuovo pacchetto di base, con un namespace di primo livello (ad esempio il nome della tua azienda) e un nome specifico, vai nella cartella src/ ed esegui:
$ cd src $ paster create -t plone myorg.mypackage
Ti verranno fatte una serie di domande. Fai in modo che il pacchetto namespace e il nome del pacchetto corrispondano al nome dell'egg. Nel nostro caso il pacchetto namespace è myorg e il nome del pacchetto è mypackage. In generale, rispondi False alla domanda sul fatto che il tuo pacchetto sia "zip safe". Inserisci gli altri metadati come richiesto.
Ora avrai:
- Un setup.py che contiene i metadati che hai inserito
- Un pacchetto in myorg.mypackage/myorg/mypackage. Il tuo codice sorgente va qui.
- Un modello di partenza per configure.zcml, tests.py e alcuni ulteriori utili punti di partenza.
- Della documentazione generica in myorg.mypackage/docs.
Chiaramente devi anche aggiungere questo pacchetto al buildout. In buildout.cfg, dovresti avere:
[buildout]
...
eggs =
...
myorg.mypackage
develop =
src/myorg.mypackage
A meno che non pensi di includere questo pacchetto tramite un altro pacchetto, probabilmente avrai anche bisogno di uno slug ZCML:
[instance]
...
zcml =
myorg.mypackage
Non dimenticare di rieseguire buildout dopo aver fatto la modifica:
$ ./bin/buildout
Specificare dipendenze
Se il tuo nuovo pacchetto ha delle dipendenze esplicite, puoi elencarle in setup.py. In questo modo buildout potrà scaricarle e installarle insieme al pacchetto. Le dipendenze sono elencate tramite l'argomento install_requires del metodo setup(): di default setuptools viene elencato qui, poichè ne abbiamo bisogno per supportare i pacchetti namespace. Per aggiungere sqlalchemy 0.3 (ma non 0.4), e il driver MySQL-Python, potresti modificarlo in questo modo:
install_requires=[
'setuptools',
'sqlalchemy>=0.3,<0.4dev',
'MySQL-Python',
],
Caricare il tuo egg su Cheese Shop
Se vuoi condividere il tuo pacchetto con il resto della comunità Python e renderne semplice l'installazione usando strumenti come buildout e easy_install, puoi caricare il pacchetto su Cheese Shop.
Prima di farlo dovresti:
- Fare un commit delle tue ultime modifiche e taggare la versione in Subversion, se possibile.
- Rimuovere (temporaneamente) il file setup.cfg: questo rende il tuo pacchetto una release di sviluppo.
- Fai in modo che il numero di versione in setup.py sia corretto. Questo dovrebbe seguire convenzioni comuni come ad esempio "1.0b2" per la seconda beta della versione 1.0, o "2.1.3rc1" per la prima release candidate della versione 2.1.3.
- Se usi Mac OS X, esegui export COPY_EXTENDED_ATTRIBUTES_DISABLE=true prima nella shell, altrimenti l'egg conterrà dei fork delle risorse di Mac OS X che causano problemi se verrà usato su Windows.
Quando sei pronto, esegui il seguente comando dalla cartella del tuo pacchetto (cioè src/myorg.mypackage):
$ python setup.py egg_info -RDb "" sdist bdist_egg register upload
Questo ti chiederà di creare un account su Cheese Shop se non ne hai già uno. Puoi eseguire questo comando tutte le volte che vorrai rilasciare una nuova versione (probabilmente con un nuovo numero di versione).
