2009-04-24 100 views
5

我和其他一些開發人員就開源項目進行了一些討論。我是python新手,但在我看來,網站包是爲圖書館而不是終端用戶應用程序。這是真的,還是站點包是一個合適的地方來安裝一個應用程序,由最終用戶運行?站點包是適用於應用程序還是僅適用於庫?

回答

5

一旦你到了你的應用程序,準備分發點,包起來爲您最喜愛的分佈/在將你的庫代碼在站點包和可執行腳本的系統路徑的方式操作系統。

在此之前(即對所有的開發工作),不做任何上述的:保存自己主要的頭痛和使用zc.buildoutvirtualenv保持你的代碼(如果你喜歡,它的依賴以及)隔離來自系統的其餘部分。

3

最終用戶運行的程序通常位於其路徑中的某處,模塊目錄中的大部分代碼通常位於站點包中。

許多python程序將在路徑中放置一個小腳本,該腳本導入模塊並調用「main」方法來運行該程序。這允許程序員進行一些前期檢查,並且如果需要找到需要的模塊,可能會修改sys.path。這也可以加速大型程序的加載時間,因爲只有導入的文件將從字節碼運行。

4

我們這樣做。

我們下載的大多數東西都是在網站包中。他們來自pypi或Source Forge或其他外部來源;他們很容易重建;它們被高度重用;他們變化不大。

必須的東西,我們寫的是在其他位置(通常在/opt,或c:\opt),幷包含在PYTHONPATH

有沒有很好保持我們的東西從site-packages的理由。然而,我們的微弱藉口是我們的東西變化很大。幾乎不斷。每當我們認爲我們有更好的東西時,要重新安裝在網站包裝中就有點痛苦。

由於我們正在測試我們的工作目錄或SVN檢出目錄,因此我們的測試環境大量使用PYTHONPATH

PYTHONPATH的開發使用流入生產。我們使用setup.py進行生產安裝,但在/opt下安裝到備用家中,並將PYTHONPATH設置爲包括/opt/ourapp-1.1

+0

聽起來像你們真的可以從virtualenv + pip(或zc.buildout)中獲益。 – 2009-04-27 12:00:01

+0

我們對out配置沒有任何問題 - virtualenv沒有增加太多價值。我們使用某種虛擬機(也許VMWare - 別人負責這一點)來託管各種服務器進行測試,質量保證,製作等。在單臺機器上使用許多虛擬機似乎比虛擬機簡單。 – 2009-04-27 12:31:42

0

網站包是爲圖書館,當然。

混合的方法可能會工作:您可以將您的應用程序所需的庫安裝在site-packages中,然後在其他地方安裝主模塊。

0

如果您可以將應用程序的一部分轉換爲庫並提供API,那麼site-packages是一個不錯的選擇。這實際上是多少個Python應用程序執行的。

但是,從用戶或管理員的角度來看,這實際上並不是問題所在。問題是我們如何管理已安裝的東西。安裝完成後,我如何升級並卸載它?

我使用Fedora。如果我使用它附帶的python,我不喜歡將東西安裝到RPM系統以外的站點包。在某些情況下,我已經自己構建了rpm來安裝它。

如果我在RPM之外構建自己的python,那麼我自然會想用python的機制來管理它。

第三種方法是使用諸如easy_install之類的東西來安裝這樣的東西,例如作爲用戶到主目錄。

所以

  • 允許包裝分佈。
  • 允許選擇要使用的python。
  • 允許使用python安裝的發行版,如果您沒有對站點包的權限。
  • 允許使用python安裝在可以使用站點包的分佈之外。
相關問題