zc.buildout est un utilitaire créer par Jim Fulton, le papa de Zope.
L'étendue des capacités de zc.buildout est énorme et mériterais un livre entier.
Cependant, voici un petit exemple pour se monter un environnement de
paquets/binaire python avec un simple petit fichier de configuration.
Tout d'abord, nous allons nous créer un virtualenv afin de ne vraiment pas
polluer notre distribution:
gawel@Stacy:~$ virtualenv --no-site-packages py
New python executable in py/bin/python
Installing setuptools.............done.
Si vous n'avez pas virtualenv, installez setuptools et virtualenv sur votre
système. D'après moi, ce sont les deux seuls packages qui mérite d'être
installé globalement, pour tout le système.
On va ensuite installer zc.buildout dans notre environnement:
gawel@Stacy:~$ cd py
gawel@Stacy:~/py$ ./bin/easy_install zc.buildout
Searching for zc.buildout
...
Finished processing dependencies for zc.buildout
Parfait, maintenant, initialisons l'environnement de zc.buildout:
gawel@Stacy:~/py$ ./bin/buildout init
Creating '/Users/gawel/py/buildout.cfg'.
Creating directory '/Users/gawel/py/parts'.
Creating directory '/Users/gawel/py/develop-eggs'.
Generated script '/Users/gawel/py/bin/buildout'.
Puis on édite le fichier buildout.cfg pour qu'il ressemble à ça:
gawel@Stacy:~/py$ cat buildout.cfg
[buildout]
parts = eggs
[eggs]
recipe = zc.recipe.egg
eggs=
ipython
i18ndude
ZopeSkel
IngeniSkel
iw.releaser
Vous pouvez mettre absolument n'importe quel egg dans l'option eggs.
La seule contrainte est que ceux-ci se trouvent sur pypi.
On lance la construction du buildout:
gawel@Stacy:~/py$ ./bin/buildout
Installing eggs.
...
Generated script '/Users/gawel/py/bin/ipython'.
Generated script '/Users/gawel/py/bin/pycolor'.
Generated script '/Users/gawel/py/bin/i18ndude'.
Generated script '/Users/gawel/py/bin/project_deploy'.
Generated script '/Users/gawel/py/bin/project_release'.
Generated script '/Users/gawel/py/bin/project_diff'.
J'ai maintenant tout mes binaires dans le dossier bin/ de l'environnement:
gawel@Stacy:~/py$ ls bin/
activate easy_install-2.4* project_deploy* pycolor*
buildout* i18ndude* project_diff* python*
easy_install* ipython* project_release* python2.4@
Le must, c'est que je peux importer chacun de ses paquets dans mon ipython:
gawel@Stacy:~/py$ ./bin/ipython
In [1]: import i18ndude
In [2]: dir i18ndude
------> dir(i18ndude)
Out[2]: ['__builtins__', '__doc__', '__file__', '__name__', '__path__']
Vous pouvez bien sur ajouter des eggs dans votre buildout.cfg puis relancer
./bin/buildout pour qu'il soit prit en compte.
Ceci est une simple introduction à zc.buildout. On peut faire bien mieux, je
sais. Mais ça deviendrais compliquer de tout expliquer dans un simple post :)
Simplement, Je trouve ça tellement pratique pour tester rapidement un package
que je voulais en faire bénéficier tous ceux qui ne connaissent même pas
l'existence de zc.buildout.