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 等當然不在話下;此外還提供許多圖像處理函數,如圖像增強、濾波算法等。
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 怎么可以不去關注一下!
PyQuery (with lxml)
安裝方法 pip install pyquery
Python 解析 HTML 時最經常被推薦的是 Beautiful Soup ,而且它的確也表現很好。提供良好的 Python 風格的 API,而且很容易在網上找到相關的資料文檔,但是當你需要在短時間內解析大量文檔時便會碰到性能的問題,簡單,但是真的非常慢。
dateutil
安裝方法:pip install dateutil
處理日期很痛苦,多虧有了 dateutil
fuzzywuzzy
安裝方法:pip install fuzzywuzzy
fuzzywuzzy 可以讓你對兩個字符串進行模糊比較,當你需要處理一些人類產生的數據時,這非常有用。下面代碼使用Levenshtein 距離比較方法來匹配用戶輸入數組和可能的選擇。
watchdog
安裝方法:pip install watchdog
watchdog 是一個用來監控文件系統事件的 Python API和shell實用工具。
sh
安裝方法:pip install sh
sh 可讓你調用任意程序,就好象是一個函數一般
pattern
安裝方法:pip install pattern
Pattern 是 Python 的一個 Web 數據挖掘模塊。可用于數據挖掘、自然語言處理、機器學習和網絡分析。
path.py
安裝方法:pip install path.py
當我開始學習 Python 時,os.path 是我最不喜歡的 stdlib 的一部分。盡管在一個目錄下創建一組文件很簡單。
xlrd,xlwt,openpyxl
用于解析excel模塊,前兩個適用于2003以前,后面的支持2007.
line_profiler and kernprof
pythonhosted.org/line_profiler/#installation
Robert Kern有一個稱作line_profiler的不錯的項目,我經常使用它查看我的腳步中每行代碼多快多頻繁的被執行。
想要使用它,你需要通過pip安裝該python包:pip install line_profiler
一旦安裝完成,你將會使用一個稱做“line_profiler”的新模組和一個“kernprof.py”可執行腳本。
memory_profiler
https://github.com/fabianp/memory_profiler
現在我們對計時有了較好的理解,那么讓我們繼續弄清楚程序使用了多少內存。我們很幸運,Fabian Pedregosa模仿Robert Kern的line_profiler實現了一個不錯的內存分析器。
首先使用pip安裝:
1 $ pip install -U memory_profiler
2 $ pip install psutil
(這里建議安裝psutil包,因為它可以大大改善memory_profiler的性能)。
chardet
如果遇到網頁編碼問題試試這個
Docopt
拋棄optparse和argparse吧,使用docstrings來構建優雅的,可讀性強的,并且復雜(如果你需要的話)的命令行界面。IMO2013年創建的最好的庫。
Requests
稱為人類使用的HTTP,是一個處理HTTP請求更為pythonic 的方法,比urllib2更更更好用。口碑可見,他在PyPI上下載已經超過5,000,000次 http://cn.python-requests.org/en/latest/user/quickstart.html#id2
Bottle
是一個快速,簡單,輕量級的WSGI微型web框架。幾秒內就能構建小型站點和APIs。所有的框架只有一個py文件,你甚至可以放進任意目錄。
Structlog
一個先進的日志記錄處理器。他集成了多個現存的日志記錄工具,包含了Python標準庫。你可以創建普通記錄器,按你所想增加內容,使你的日志擁有持久性和可讀性。
Watchdog
一個跨平臺的Python庫和shell工具,可以監視文件系統事件。超級好用,并且容易上手。
Delorean
可以是你用非常方便的方法來處理數據和時間。設置時區,截取到秒,分,小時,或者甚至使用特殊方法從一個數據迭代到另一個。瀏覽下文檔,里面有很多示例。
lxml
是libxml2和libxslt的合體。如果你要處理XML或HTML,lxml是最好的選擇。
生成圖形庫
pychart
chartdir