2010-07-24 72 views
108

我是一名java開發人員/ python初學者,我缺少我的maven特性,尤其是依賴管理和構建自動化(我的意思是你不構建,但是如何創建一個用於部署的包? )蟒蛇的Maven等價物

是否有一個python等價物來實現這些功能?
注意:我用python 2.x

謝謝。

回答

52

Python使用distutils和setuptools進行依賴和打包。

繼承人這也解釋了基礎知識教程:http://docs.activestate.com/activepython/3.2/diveintopython3/html/packaging.html

總之,你將有setup.py文件,它具有依賴性和腳本編譯/安裝的信息,你可以建立雞蛋,DIST壓縮包,二進制壓縮包等用它。

+5

由於電子離開馬克朝聖者關閉該網站,這裏是[activestate](http://docs.activestate.com/activepython/3.2/diveintopython3/html/packaging.html)的鏡像。 – jiggy 2012-02-04 20:18:28

+1

我建議將其更新爲指向[The Python Packaging User Guide](https://python-packaging-user-guide.readthedocs.io/en/latest/),因爲它現在是權威指南。 – kojiro 2016-05-24 20:16:41

8

對於部署,除distutils/setuptoos之外,還請查看pip package(使用下面的setuptools)。它可以回滾失敗的安裝並卸載(easy_install/setuptools中缺少的東西)。另外,您可以通過需求文本文件指定依賴關係。

5

使用virtualenv創建獨立的項目環境並使用pip/easy_install管理依賴關係很好。

+1

很傷心:) – reversiblean 2017-12-24 09:39:48

32

沒有直接匹配。然而,最近的就可以得到:

  • zc.buildout:它可以設置封閉的環境中,下載/手柄的依賴,初始化腳本等它還基於插件(或「配方」,他們稱之爲他們)。幾年前我曾經在beta階段使用過它,可能從那時起它就有了進化。有和Maven一樣的學習曲線,但它也是最強大的。

其他產品都不Maven的/ zc.buildout的子集:

Y OU大概知道螞蟻和shell腳本,所以你也可以檢查這些Python工具:

  • FabricPaver:添加了香精的命令行任務亞軍。它們將傳統的命令行執行封裝在Python中,並允許以更強大的方式管理各種任務(任務依賴關係,解釋輸出,在遠程服務器中運行命令等)。基本上沒有什麼你不能使用shell腳本,但是在python中,它不那麼神祕。
11

我想指出PyBuilder這在很大程度上受到行家的啓發,但使用Python,而不是XML進行配置,所以它實際上是可讀的,恕我直言。

有一個用於依賴管理的插件(在引擎蓋下使用pip並區分構建和運行時依賴關係),與maven不同,您可以使用單個命令運行整個構建生命週期。