作者:賴勇浩(http://blog.csdn.net/lanphaday)
wxPython
如果你之前是 windows 程式員,用 MFC 或者 WIN32API 開發介面程式,那進入 Python 國度最好的 GUI 選擇應該是 wxPython。它是 wxWidgets 的 Python Bind,與 wxWidgets 的開發完美同步,最為重要的一點是它的訊息機制與 MFC 頗為相似,以前在 MFC 的經驗完全可以稍作變化就套用在 wxPython 上面。在 WIN32 開發中,最討厭的一環肯定有 WM_SIZE 訊息的處,在主視窗大小變化的時候,保持控制項布局在 WIN32 是一件麻煩事。這件事情 wx 解決得非常完美,它的sizer 概念可以讓我輕鬆地在不同視窗尺寸的情況下保持完美的控制項布局。另外如果你已經討厭了 MFC 的 doc-view 模型,wx 也可以給你一個新的選擇;如果你非常喜歡 doc-view 模型,放心,在 wx 中仍然可以輕鬆實現,以前的思想依然可以在這裡發揮餘熱。
wxPython 有兩個封裝,一個 PythonCard,另一個是 dabo。前者是 wxPython 的有限封裝,不支援 wxPython 的全部特性,它的目標是讓 wxPython 更加 Pythonic。後者比 PythonCard 要龐大不少,確切來說,它應該是一個三層架構的 C/S 模式的開發架構。如果你想開發基於資料庫的應用(如 MIS、ERP 等)用 dabo 是一個不錯的選擇;另外,如果你之前習慣了 VB、VFP、Delphi 等 RAD 開發環境,dabo 並不比這些昂貴的工具差多少哦!
py2exe
按照邪惡的 windows 思維,編寫的應用如果不編譯出一個 .exe 檔恐怕是算不得“軟體”的,py2exe 作用正是把你的 .py 指令碼變成 .exe 檔,通常它會把指令碼打包到一個 .zip 檔案中去,但也你可以通過修改 setup.py 指令碼把所有的指令碼、依賴的 dll 等全部打包到一個 exe 中去,看起來跟 VC、VB 編譯出來的程式沒有什麼兩樣!
如果你的客戶需要在 windows 下使用你的應用程式,py2exe 是你不可或缺的工具。我就是用它打包由 wxPython 寫的小工具給公司裡的遊戲策劃用的。
psyco
指令碼的執行效率多少有點差強人意,雖然最佳化起來並不是難事,但如果有簡單的方法,近乎不用修改原始碼,那當然值得去關注一下。psyco 的神奇在於它只需要在代碼的入口處調用短短兩行代碼,效能就能提升 40% 或更多,真可謂是立竿見影!
如果你的客戶覺得你的程式有點慢,敬請不要急著去最佳化代碼,psyco 或許能讓他立即改變看法。psyco 堪稱 Python 的 jit,有許多潛力可以挖掘,如果剩下來給你最佳化效能的時間已經不多,請馬上去閱讀它的手冊,有許多招兒輕鬆最佳化效能。
PIL
PIL 是 Python 的影像處理庫,我的看法是強到沒得說,簡單到沒得說。它可以開啟數十種映像格式,常見的 jpg/png/bmp 等當然不在話下;此外還提供許多影像處理函數,像增強、濾波演算法等,詳情可以參考我以前的一篇文章《用Python 做影像處理》(http://blog.csdn.net/lanphaday/archive/2007/10/28/1852726.aspx)和《計算映像相似性》(http://blog.csdn.net/lanphaday/archive/2008/04/24/2325027.aspx)。
MySQLdb
這是 Python 對開來源資料庫 Mysql 的支援,官網在http://sourceforge.net/projects/mysql-python。支援 Mysql 3.23-5.1 全系列版本,Python 版本的要求是 2.3-2.5。MySQLdb 是 Python DB API-2.0 的實現,現在已經很成熟了。最新的版本是 1.2.2 。
如果從事伺服器開發,那少不得跟資料庫連接池打交道,這時你可以使用 DBUtils 或 jonpy 兩個開來源程式庫。其中 DBUtils 是一套資料庫連接池庫,而 jonpy 則包括了 CGI 以及資料庫連接池等多個功能,請在閱讀手冊後選擇合適的自己庫。
pyprocessing
Python 解譯器裡的 GIL(全域解譯器鎖)使得 Python 在多核時代有點尷尬——這個支援原生線程的指令碼語言竟然不能通過多線程利用多個 CPU 核心同時並發計算。pyprocessing 沒有嘗試去除 GIL,而是劍走偏鋒,嘗試從多進程的方式來協助 Python 走出困境。結果就是使用 pyprocessing 建立進程和處理序間通訊不僅像使用內建的 threading 模組那麼簡單,甚至還更加簡單。pyprocessing 不僅可以通過本機 socket 和管道進行通訊,而且封裝得極為完美,它的 Queue 實現用起來跟內建的 Queue 沒啥兩樣,但它是一個進程間共用的隊列哦!
pyprocessing 在 py2.6 和 py3.0 中已經作為內建模組了,也算是開發社區對 pyprocessing 項目的肯定吧。如果你用 Python 程式開發伺服器應用,特別是網路遊戲這樣的應用,pyprocessing 怎麼可以不去關注一下!