2012-06-11 49 views
8

我深入包裝Python應用程序的世界,並設法進入這種混亂狀態,因爲我應該處理的所有概念和選項,我的頭開始旋轉。distutils,distutils2,點和要求

問:

我需要做什麼來實現?從位於git服務器上的源部署我的Python項目。部署工具應該獲取並安裝所有依賴項,其中大部分依賴項都可以通過PIP獲得,並且需要通過Git來獲取和安裝。最終的結果應該是通過皮普安裝,所以我可以做一些事情如:

[~] git clone git://some/path/project.git 
[~] pip install project/ 

語境: 目前,我試圖讓Distutils2做我想做什麼,但似乎setup.py使用國產'generate-setup'命令不會與Pip一起播放。

我想使用Distutils2,因爲它應該是所有的未來證明。但是所有工具的各種文檔都很糟糕(準確的信息混雜着過時和不準確的信息),這使得一個人質疑他的理智。

那我該怎麼辦?堅持distutils和setup.py?或者我需要看看Buildout之類的東西嗎?

請問類似的回答者請列出我應該用特定工具做的事情(例如:使用Distutils2部署代碼,使用PIP安裝依賴項,爲git依賴項編寫腳本並將所有內容粘在一起做XYZ)。

編輯:我正在使用Distutils2 1.0a4,這似乎與文檔不兼容。

編輯2:重新格式化問題,使其更清楚我的問題是什麼。

Edit3:這是我第四次打破Python的打包和分發工具鏈。我並不想讓其他人爲我做我的工作,但是對於一個新手來說,要破解一個特定的工具應該做什麼,哪裏開始,哪裏結束,幾乎是不可能的。尤其是因爲這些工具之間的功能重疊。我不是位於由聖人包圍的硅谷,他們可以啓動我的祕密,公開可用的文件是沒有用的。

最終編輯: 雖然我並沒有真正考慮在開始此問題時用Buildout替換virtualenv。但是在做我的研究的同時,我意識到了一些我一直都知道的事情,但只是完全沒有透露給我。有關Python打包和部署自動化的許多方法。還有很多工具可以幫助你完成任務。然而,雖然這些工具之間存在重大的功能重疊,但工具鏈還在不斷髮展,迄今爲止還沒有明確的「標準最佳實踐」。分銷工具鏈的軍備競賽仍然十分熱烈,尚未出現明確的勝利者。這可能會讓我們的noobs感到困惑,他們認爲Python中的大部分內容都適用。我所追求的(distutils/setuptools + pip + virtualenv以Buildout的方式,或者甚至與Buildout的半集成)當然是可行的,但它沒有多大意義,不是因爲它不可能 - 而是因爲沒有人能做到。如果你需要這種複雜程度,那麼你需要承諾。就我個人而言,我決定將virtualenv放在後面(對於這個項目),並且擁抱Buildout。

回答

7

看看buildout;再加上一個叫做mr.developer的擴展插件,你可以將一個部署系統放在一起,這個系統可以完成你所要求的所有功能。

有很多在網絡上擴建的配置實例和介紹,這裏有一些讓你開始:http://www.slideshare.net/djay/buildout-how-to-maintain-big-app-stacks-without-losing-your-mind

包括YouTube視頻:

+0

即使它不是我真正想要的東西,你的鏈接集合在最終清除關於構建的頭腦中的空洞。謝謝。 – JanezStupar

1

它並不需要是困難的:安裝Jenkins和使用PIP的requirements.txt files來定義您的項目需要的軟件包。之後,您可以在Jenkins中配置構建以執行各種任務,包括安裝所需的軟件包。它可以從你的倉庫獲取源代碼並安裝+構建整個項目。

+0

Jenkins可以安裝項目的事實是它自己的目標的要求:提供持續集成測試。但是使用Jenkins進行部署任務是一個巨大的過量!如果有更好的工具可用,這是一個相當大的軟件包! –

+0

[fabric](http://fabfile.org)可用於部署 – jfs