CPAN Goodies for all

Sunday, June 05, 2005

 

在我考慮如何構建一個dirt-simple CPAN的副本(clone)的不到兩週時間,除腳本以外所有東西即將要用上了。現在,安裝一個Python包簡單的就如同鍵入"easy_install SQLObject",然後你可以就大聲地宣佈搞定了。乾淨地卸載或更新包也幾乎是如此這般簡單。

EasyInstall目前的版本號爲0.4a1,所以對於許多特性我仍有一些工作要做。其中最重要的是腳本處理和自動化依賴安裝(automatic dependency installation)。文檔可以使用一個“讓你的包與EasyInstall很好地配合”部分。而且我也很願意做一些重構,使得它可以使用logging模塊並支持可插入的下載器(pluggable downloaders),這也使得GUI或基於螺旋式(Twisted-based)的程序可以控制實際的下載過程。

在增加所有這些新特性的過程中,我也在刻苦鑽研Python Eggs to-do list,還特別更新了Eggs開發者文檔。我還想撰寫一部分內容,關於使用Eggs創建插件應用程序框架(application plug-in architectures)並詳述更多一些API的相關內容,但是事實上它應該已經是很好用的了。

       所有要解決的問題之中最棘手的部分已在安裝過程中被逐一地解決着。一旦EasyInstall有能力處理腳本,他便可以實現自我升級,而初始的安裝程序可以通過過時的“setup.py install”方法來完成,所以那是無關緊要的。(實際上,如果你有Python2.4並用“python -m easy_install”來運行它,EasyInstall現在就可以自我升級。)

       但是,那些依賴使用一個較新(或較老)版本的setuptools來完成他們自身安裝的包該怎麼辦呢?那是一直在令我頭疼的。包仍舊很迅速地變化着,這很難都告訴人們,“確保你安裝了X版本的setuptool”。另一方面,如果你只是在安裝腳本里“'import pkg_resources”和“'require("setuptools>=0.4a1")”,那麼他將適當地以一個ImportErrorDistributionNotFoundVersionConflict退出。或者你可以捕獲那些錯誤並通過彈出一個要求用戶安裝(或升級)setuptools的信息來退出。我估計那大概纔是處理它的最安全和完善的方法,我或許應當在文檔頁面裏添加一些代碼示例來說明如何去做。

與此同時在,我寫這篇文章間歇的時候去嘗試着了看能否找到一種方法來使setuptools/EasyInstall以一個egg來安裝他自己,即使是你使用distitils第一次安裝它的時候。唉,結果是distutil本身可以利用'extra_path'的雙參數形式(two-argument form)來完成這些。現在,setuptoolsCVS版本使用一個'setuptools.pth'文件進行安裝,並被安裝到一個名爲'setuptools-0.4a1.egg'的目錄,因此創建了一個不帶元數據的“poor man's egg”,然而其目錄名字裏面的信息足以使egg運行時系統(runtime system)能夠把它當作一個真正的egg來對待。然後'setuptools.pth'文件會確保包總是能夠被導入,但它比'easy-install.pth'的優先級要低一些。因此,如果你使用EasyInstall來升級setuptools,較新的版本將會過時,setuptools.pth將變成一個相對無害的“剩飯”。

實際上setuptools的版本無論何時發生變化,每個已安裝的版本和extra_path設置將仍會各自可用。唯一的問題是實際上你無法在運行時改變版本,這是由於有效的Python程序裏面在重載模塊時會總出些常見的問題。在將easy-install.pth文件改爲指向setuptools新版本之後,egg運行時版本之間的更替將需要解釋器的重啓。然而,在內部使用EasyInstall到“更新插件(update plugins)”的應用程序一般將會在激活其他庫的升級之前進行這樣的重啓,所以,那可能是無關緊要的:setuptools在那方面與程序的其他庫相比將真的沒什麼差別。

Whew,只是利用Python標準庫裏面的東西就可以完成的事情有時候真的讓我很吃驚。SetuptoolsEasyInstall可進行ziptarfile處理、HTTP下載、HTML抓屏、subversion checkouts以及一大堆其他事情。而到目前爲止我只是花了兩個週末在EasyInstall上面。

現在,開始有人問我爲啥不早點寫出來這些東西。:)

 

(原文鏈接網址:http://dirtsimple.org/2005/06/cpan-goodies-for-all.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章