2011-06-07 54 views
6

在我的工作環境中,我必須管理許多(目前數十個,但最終可能有數百個)Python Web應用程序,可能運行各種框架,庫等(所有版本均爲各種版本)。 Virtualenv到目前爲止一直在管理這個問題,但我仍然希望能夠更好地管理事情,尤其是在管理軟件包升級時。管理許多Python項目/ virtualenvs

我想到了幾個方案

選項1:根據需要分別使用 PIP安裝每個項目都需要的模塊在每個virtualenv中,升級每個。這對每次升級都需要大量的時間成本,並且需要額外的文檔來跟蹤事情。可能由一些管理腳本提供便利。

選項2: 將任何應用程序使用的所有庫安裝在中央存儲庫中,使用符號鏈接爲所有項目輕鬆更改一次版本。輕鬆升級和集中管理,但首先放棄使用virtualenv的一些最好的好處。

選項3: 將上述兩種方法混合在一起,集中最常用的庫和/或可能需要升級的庫,並將其餘的本地安裝到每個virtualenv。

其他人有沒有類似的情況?處理這個問題的最好方法是什麼?

回答

2

你可能會考慮使用zc.buildout。設置比普通的pip/virtualenv更麻煩,但它爲您提供了更多自動化的機會。如果磁盤空間的使用不是問題,我建議你只需爲每個項目使用單獨的環境,以便每次升級它們一個。

+0

看起來buildout確實爲這類事情提供了一些相當不錯的工具。我必須更深入地研究它,看看它是如何工作的,以實現我們的問題自動化。 – 2011-06-07 22:14:54

0

我們在我們的項目根目錄下有一個requirements.pip文件,其中包含用於安裝pip的軟件包,因此自動升級相對比較容易。我不確定符號鏈接是否能解決問題 - 這會讓您難以升級您的項目的一個子集。如果磁盤空間不是問題,並且您可以編寫一些簡單的腳本來列出和升級軟件包,我會堅持使用virtualenv。