|
從下面部分可以大致了解一下各個(gè)工具的由來(lái)和區(qū)別,推薦Python打包工具這篇文章,來(lái)自圖靈社區(qū)的一篇翻譯文,很詳細(xì)的解釋了Python打包工具的發(fā)展。 下面部分轉(zhuǎn)載自:Yang Yubo's blog 當(dāng)前的包管理工具鏈?zhǔn)?easy_install/pip + distribute/setuptools + distutils, 顯得較為混亂。 而將來(lái)的工具鏈組合非常簡(jiǎn)單:pip + distutils2 distutilsPython 自帶的基本安裝工具, 適用于非常簡(jiǎn)單的應(yīng)用場(chǎng)景; 使用: 為項(xiàng)目創(chuàng)建 setup.py 腳本 執(zhí)行 setup.py install 可進(jìn)行安裝 setuptools針對(duì) distutils 做了大量擴(kuò)展, 尤其是加入了包依賴機(jī)制. 在部分 Python 子社區(qū)已然是事實(shí)上的標(biāo)準(zhǔn); distribute由于 setuptools 開發(fā)進(jìn)度緩慢, 不支持 Python 3, 代碼混亂, 一幫程序員另起爐灶, 重構(gòu)代碼, 增加功能, 希望能夠取代 setuptools 并被接納為官方標(biāo)準(zhǔn)庫(kù), 他們非常努力, 在很短的時(shí)間便讓社區(qū)接受了 distribute; easy_installsetuptools 和 distribute 自帶的安裝腳本, 也就是一旦 setuptools 或 distribute 安裝完畢, easy_install 也便可用. 最大的特點(diǎn)是自動(dòng)查找 Python 官方維護(hù)的包源 PyPI , 安裝第三方 Python 包非常方便; 使用: setuptools / distribute 都只是擴(kuò)展了 distutils easyinstall [PACKAGENAME] 自動(dòng)從 PyPI 查找/下載/安裝指定的包; pippip 的目標(biāo)非常明確 – 取代 easyinstall. easyinstall 有很多不足: 安裝事務(wù)是非原子操作, 只支持 svn, 沒有提供卸載命令, 安裝一系列包時(shí)需要寫腳本; pip 解決了以上問(wèn)題, 已儼然成為新的事實(shí)標(biāo)準(zhǔn), virtualenv 與它已經(jīng)成為一對(duì)好搭檔; 使用: 安裝: pip install [PACKAGENAME] 卸載: pip uninstall [PACKAGENAME] 支持從任意能夠通過(guò) VCS 或?yàn)g覽器訪問(wèn)到的地址安裝 Python 包 distutils2setuptools 和 distribute 的誕生是因?yàn)?distutils 的不濟(jì), 進(jìn)而導(dǎo)致目前分化的狀況. 而 Guido 并未接納 distribute 為官方標(biāo)準(zhǔn), 并說(shuō)明了原因. 開發(fā)者在失落之余明確了新的方向和任務(wù) – distutils2, 它將成為 Python 3.3 的標(biāo)準(zhǔn)庫(kù) packaging , 并在其它版本中以 distutils2 的身份出現(xiàn); 換句話說(shuō), 它和 pip 將聯(lián)手結(jié)束目前混亂的狀況; zc.buildout這是一個(gè)臃腫的安裝、部署系統(tǒng), 在 Zope 社區(qū)運(yùn)用教廣, 功能強(qiáng)大/繁復(fù)但使用場(chǎng)景有限, 除非確有需要, 不值得投入太多的精力去研究, pip + virtualenv + fabric 的工具鏈組合更為簡(jiǎn)單、靈活. 參考Why use pip over easy_install? Differences between distribute, distutils and setuptools? The fate of Distutils – Pycon Summit + Packaging Sprint detailed report A Quick Diff between Distutils and Distutils2 5 tips for packaging your Python projects |
|
|