[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