簡體   English   中英

是否有任何其他良好的替代zc.buildout和/或virtualenv安裝非python依賴項?

[英]Are there any other good alternatives to zc.buildout and/or virtualenv for installing non-python dependencies?

我是一個團隊的成員,即將推出基於python(Django)的測試版網站和附帶的后端工具套件。 過去幾周,該團隊的規模從2個增加到4個,我們預計未來幾個月的增長率至少會持續增長。 已經開始困擾我們的一個問題是讓每個人都能在配置開發環境和安裝所有合適的雞蛋等方面加快速度。

我正在尋找簡化此過程的方法,並使其不易出錯。 zc.buildout和virtualenv看起來都是解決這個問題的好工具,但兩者似乎都主要集中在特定於python的問題上。 我們有幾個小的子項目在其他語言(特別是Java和Ruby)以及許多必須在本地編譯的python擴展(lxml,MySQL驅動程序等)。 實際上,我們方面最大的荊棘之一就是針對適當版本的共享庫編譯了一些這些擴展,以避免段錯誤,malloc錯誤和各種類似的問題。 我們有4種不同的開發環境 - 在ppc上有1只豹子,在intel上有1只豹子,1只ubuntu和1只窗戶,這對我們沒有幫助。

從dos / unix提示符開始,最理想的是大致類似的東西:

$ git clone [repository url] ... $ python setup-env.py ...

然后執行zc.buildout / virtualenv所做的事情(復制/符號鏈接python解釋器,提供一個干凈的空間來安裝雞蛋)然后安裝所有必需的雞蛋,包括安裝任何本機共享庫依賴項,安裝ruby項目,java項目等。

顯然,這對於開發環境以及在登台/生產服務器上部署都很有用。

理想情況下,我希望通過python將可以完成此任務的工具寫入/可擴展,因為這是(並且將始終是)我們團隊的通用語言,但我對其他語言的解決方案持開放態度。

那么,我的問題是:是否有人對更好的替代方案或他們可以使用這些解決方案之一共享的任何經驗提出任何建議來處理更大/更廣泛的安裝基礎?

Setuptools可能比你想象的更能滿足你的需求 - 如果你需要自定義版本的lxml才能在MacOS X上正常工作,例如,你可以在setup.py中的一個適當的蛋中放置一個URL並在必要時讓setuptools下載並安裝在開發人員的環境中; 它還可以被告知從版本控制下載並安裝特定版本的依賴項。

也就是說,我傾向於使用可編寫腳本的虛擬環境。 構建kickstart文件非常簡單,該文件安裝您依賴的任何軟件包,然后針對它啟動虛擬機(或生產硬件!),使用木偶或類似軟件進行其他管理(添加用戶,設置服務[數據庫來自哪里] ?]等)。 當您的生產環境包含多台計算機時,這會特別方便 - 只需在其便捷的小沙盒子網中編寫多個VM的代碼(我使用libvirt + kvm;而在開發人員工作的所有平台上都沒有kvm可用)在,qemu肯定是,或者你可以像我一樣做,並有少量由多個開發人員共享的強大VM主機)。

這讓您擺脫了支持N平台的困境 - 您只需要一個虛擬平台來支持 - 並且意味着您的部署過程(由kickstart文件和用於設置的木偶代碼定義)是源控制和運行的通過您的質量檢查和審核流程就像其他一切一樣。

我總是在項目的頂層創建一個develop.py文件,並且還有一個packages我想要安裝的PyPI的所有.tar.gz文件的packages目錄,還包括一個已經准備好的virtualenv的解壓縮副本從該文件直接運行。 所有這些都進入了版本控制。 每個開發人員都可以簡單地檢查主干,運行develop.py ,稍后會有一個可以使用的虛擬環境,其中包括我們所有的依賴項,與其他開發人員正在使用的版本完全相同。 即使PyPI關閉,它仍然有效,這在該服務的歷史中非常有用。

基本上,你正在尋找一個跨平台的軟件/軟件包安裝程序 (在apt-get / yum /等的行上)。我不確定這樣的東西存在嗎?

另一種方法是指定需要通過特定於操作系統的軟件包管理系統安裝的軟件包列表,例如適用於Mac OS X的Fink或DarwinPorts,以及具有為內部代碼設置構建環境的腳本?

自從我發布問題以來,我一直在研究這個問題。 看起來有一些嘗試來解決我概述的一些需求,例如MinitagePuppet采用不同的方法,但兩者都可以完成我想要的 - 雖然Minitage沒有明確聲明它支持Windows。 缺乏任何更好的選擇我將嘗試制作其中一個或只是廣泛定制使用zc.buildout工作滿足我們的需求,但我仍然覺得必須有更好的選擇。

您可以考慮使用正在運行的任何生產操作系統創建虛擬機設備,以及預先構建的所有軟件依賴項。 可以遠程編輯代碼,也可以使用共享文件夾編輯代碼。 在過去的生活中,它對我來說非常有效,它具有相當復雜的開發環境。

Puppet也不(輕松)支持Win32世界。 如果您正在尋找部署機制而不僅僅是“開發設置”工具,您可以考慮查看具有開源跨平台解決方案的ControlTier( http://open.controltier.com/ )。

除此之外,您正在尋找諸如BladeLogic或OpsWare之類的“企業”軟件,並且通常會對所提供的功能采取令人憤慨的價格(我的觀點,顯然)。

很多人一直在積極地使用Puppet和Capistrano(甚至是非rails開發人員)的組合來實現部署自動化工具,效果非常好。 再次下行的是,它期待一個有點同質的環境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM