2013-07-22 86 views
1

首先讓我解釋一下目前的情況:HOWTO部署Python應用程序

我們確實有幾個依賴於自定義(不公開發布的)python應用以及一般稱爲包。這些依賴性都安裝在system python安裝上。應用程序的分發通過源碼通過git完成。所有這些計算機都隱藏在公司網絡中,並且無法訪問互聯網。

這種方法的屁股有些痛,因爲它具有以下缺點:

  • 利布斯必須手動安裝在每臺計算機上:(

如何更好地部署應用程序我最近看到virtualenv這似乎是解決方案,但我還沒有看到它。

virtualenv爲我的應用程序創建一個乾淨的python instance。這樣軟件的使用者可以輕鬆啓動它嗎?

應用程序中是否應該有一個啓動腳本,在啓動期間創建virtualenv

接下來的問題是電腦沒有互聯網接入。我知道我可以指定一個包(網絡共享?)的自定義位置,但這是正確的方法嗎?或者我是否也應該部署壓縮包?

另一種方法是運送整個python實例嗎?所以用戶不必啓動virutalenv?在這個python實例中,所有必需的軟件包將被預先安裝。

由於我們的應用快速增長,我們有一個快速發佈週期(2周)。通過git進行部署非常容易。用戶可以通過更新腳本從stable分支獲取最新版本 - 是否仍然有可能或有更好的方法?

我知道有很多問題。希望有人能回答我並給我一些建議。

+0

這是兩個獨立的問題,不是嗎? (A)客戶端(或中央服務器)如​​何確定何時升級一個或多個應用程序? (B)如何打包和交付應用程序。對於(A)也許你可以改寫一下,使你的客戶端/服務器或作者/用戶模型看起來更清晰。你的意思是「沒有互聯網接入」?這與問題有關嗎?如果更新服務器和所有客戶端計算機都位於網絡中,則它們具有所需的全部可見性,是嗎? – cfi

回答

1

您可以使用pip直接從git安裝:

pip install -e git+http://192.168.1.1/git/packagename#egg=packagename 

這適用於您是否使用virtualenv(你應該)與否。

你也可以創建一個requirements.txt文件包含要安裝的所有東西:

-e git+http://192.168.1.1/git/packagename#egg=packagename 
-e git+http://192.168.1.1/git/packagename2#egg=packagename2 

然後你只是這樣做:

pip install -r requirements.txt 

因此,部署過程將包括在獲得requirements.txt文件,然後執行上述命令。添加virtualenv會使它更清潔,而不是更容易;沒有virtualenv你會污染系統範圍的Python安裝。旨在提供一種解決方案,用於在各自不同的虛擬Python環境中運行各種應用程序;它與如何在該環境中實際安裝東西沒有多大關係。

+0

好的信息。在這裏學到了一些東西。它尚未回答如何彌補缺失的「互聯網連接」問題的部分。也許這個問題必須被詳細闡述以理解提問者的全部需求? – cfi

+0

@cfi:OP說他們在內部網絡。這就是爲什麼從192.168.1.1中的git倉庫獲取東西的例子。 –