[Python] Virtualenv vs. buildout

Riccardo Lemmi riccardo a reflab.com
Lun 26 Mar 2012 17:29:48 CEST


Giampaolo Rodolà wrote:

> Il 23 marzo 2012 12:18, Riccardo Lemmi <riccardo a reflab.com> ha scritto:
>> Non ho esperienza nell'uso di virtualenv come sistema di deployment ma quello
>> che posso dire, sulla base dalla mia esperienza su entrambi, è che non mi
>> pare che virtualenv possa essere usato in questo modo.
>>
>> zc.buildout mette a disposizione strumenti per fare un deployment replicabile
>> e versionabile che virtualenv non ha (almeno di default). Probabimente
>> l'unica similarità tra i due è la creazione di un ambiente isolato.
> 
> Infatti virtualenv non ha lo scopo di "replicare e versionare". Per
> quello usi pip.

Sono d'accordo: non si usa (o meglio non si puó usare) virtualenv.

> Basta dargli in pasto un file di testo in cui sono dichiarate tutte le
> dipendenze, che è possibile tirare giu anche da
> SVN/GIT/MERCURIAL/[...] ad una *specifica revisione*.
> Virtualenv crea l'ambiente separato e pip si occupa delle
> dipendenze/versionamento. Fine della storia.

Lo fa anche il buildout ma usando dei file di configurazione e magari qualche 
recipe (ad esempio mr.developer fa l'estrazione del codice dai repository).

> Alla luce di questo semplice fatto, e a meno che non si abbiano
> esigenze davvero particolari, personalmente non vedo un motivo valido
> per preferire buildout.
> 

In mail è difficile descrivere tutto quello che può fare uno strumento 
complesso come buildout (e anche un talk può non bastare :)

In anni di uso non posso fare che consigliarlo perchè mi ha risolto problemi 
grandi e piccoli e 'oggi' non ha più le pecche di giovinezza (i famosi buildout 
che si 'rompevano' sono diventati casi rari). Certo non è uno strumento facile 
da imparare e trovare la recipe che fa il 'lavoro' che serve può essere tedioso 
(faccio prima a farmelo da solo?), ma è comunque uno strumento versatile ed 
estendibile, è pensato per fare questo mestiere e quindi per coprire gli use 
case comuni e meno comuni.

-- 
                                       Riccardo Lemmi



Maggiori informazioni sulla lista Python