2011-06-07 14 views
6

Benim işyerinde, çok çeşitli (örneğin, çeşitli sürümlerde), çeşitli çerçeveler, kitaplıklar, vb çalıştıran Python web uygulamalarını yönetmek zorundayım. Virtualenv şu ana kadar yönetmekte bir cankurtaran olmuştur, ancak özellikle paket güncellemelerini yönetmek söz konusu olduğunda, işleri daha iyi idare edebilmek isterim.Birçok Python projesini/virtualenvs yönetme

Ben

Seçenek 1 birkaç senaryo düşündüm bile: bireysel olarak gerekli pip kullanarak her virtualenv her proje için gerekli tüm modülleri takın, yükseltme her. Bu, her bir yükseltme için önemli bir zaman maliyeti gerektirecek ve bazı şeyleri takip etmek için ek dokümantasyon gerektirecektir. Bazı yönetim komut dosyaları tarafından kolaylaştırılabilir.

Seçenek 2: Herhangi bir uygulama tarafından kullanılan tüm kitaplıkları merkezi bir depoya yükleyin, tüm projeler için sürümleri bir kez kolayca değiştirmek için symlinks kullanın. Kolay yükseltme ve merkezi yönetim, ancak ilk etapta virtualenv kullanmanın en güzel yararlarından bazıları.

Seçenek 3: Yukarıdaki iki yöntemi, en yaygın olan kitaplıkları ve/veya yükseltmelere gereksinim duyabilecekleri ve geri kalanını yerel olarak sanalenv'lere yükleyecek şekilde merkezileştirin.

Başka birinin benzer bir durumu var mı? Bunu halletmenin en iyi yolu nedir?

cevap

2

zc.buildout kullanmayı düşünebilirsiniz. Sade pip/virtualenv'den daha can sıkıcı olmakla birlikte, otomasyon için size daha fazla fırsat sunuyor. Disk alanı kullanımı bir sorun değilse, her proje için tek tek ortamları kullanmaya devam etmenizi öneririm, böylece bunları her seferinde bir kez yükseltebilirsiniz.

+0

Buildout'un bu tür şeyler için oldukça iyi araçlar sunduğu görülüyor. Sorunlarımızı otomatikleştirmek için nasıl çalışacağını görmek için biraz daha derinlemesine bakmalıyım. –

0

Yüklenecek pip için paketleri içeren proje kökümüzde bir gereksinimlerimiz var. Bu nedenle otomatik olarak yükseltme yapmak nispeten kolaydır. Symlinking'in sorunu çözeceğinden emin değilim - projelerinizin bir alt kümesine yükseltmeyi zorlaştırır. Diskspace bir sorun değilse ve paketleri listelemek ve yükseltmek için bazı basit betikler yazabilirseniz, virtualenv ile olduğu gibi davranırdım.