Gestire tutto Plone senza zc.buildout non se lo sognerebbe ormai nessuno; troppe cose da installare e configurare, troppe dipendenze da soddisfare e soprattutto troppe possibilità in più cui rinunciare.
Oggi però mi è capitato di non dover usare né Zope né Plone bensì sviluppare un semplice pacchetto python. Tale pacchetto ha qualche dipendenza particolare da gestire e non vorrei ogni volta dovermi ricordare quali siano.
Ecco l'occasione giusta per leggere un po' di cose riguardanti zc.buildout.
Parto dalla creazione di un ambiente virtuale appropriato:
$ virtualenv -p /usr/bin/python2.4 progetto_x
$ cd progetto_x
$ source bin/activate
passo quindi alla creazione di un buildout minimale a partire dalla directory buildout.
$ mkdir buildout
$ cd buildout
ora scarico il file bootstrap.py direttamente da zope.org e creo il file di configurazione:
$ wget http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py
$ vim buildout.cfg
ecco qui di seguito cosa contiene il mio file di configurazione del buildout:
[buildout]
# il buildout inizia, come tutti i buildout, con la definizione delle varie
# sezioni da includere
parts =
reportlab
base-eggs
interpreter
# mi serve mr.developer per scaricare il mio pacchetto dal repository
# cfr. http://pypi.python.org/pypi/mr.developer
extensions = mr.developer
sources = sources
auto-checkout = my_egg
# devo includere il path di reportlab nel mio interprete
extra_paths =
parts/reportlab
# questa sezione scarica semplicemente gli eggs di cui ho bisogno
[base-eggs]
recipe = zc.recipe.egg:eggs
eggs =
MySQL-python
PIL
sqlalchemy
my_egg
# attraverso questa recipe viene scaricato reportlab v.2.0
[reportlab]
recipe = gocept.download
url = http://www.reportlab.org/ftp/ReportLab_2_0.tgz
md5sum = 0de80cdf310dac692ba6ea02beb4481b
# mi creo un interprete python con la configurazione corretta presa dal buildout
[interpreter]
recipe = zc.recipe.egg
eggs = ${base-eggs:eggs}
extra-paths = ${buildout:extra_paths}
interpreter = py
scripts = py
# in ultimo definisco il repository del mio pacchetto
[sources]
my_egg = svn http://url.del.mio.pacchetto
Non mi rimane che eseguire il buildout come sempre:
$ python2.4 bootstrap.py
$ ./bin/buildout
ed il gioco è fatto.
- Archive
- 2009 2010 2011 2012