[轉]python 經常使用類庫!

1.  基本安裝

2.  Python文檔

2.1 推薦資源站點

2.2  其餘參考資料

2.3  代碼示例

  • http://newedit.tigris.org/technical.htm Limodou的NewEdit編輯器的技術手冊,討論了一些關於插件接口實現、i18實現、wxPython使用有關的問題,值得參考。
  • 關於插件擴展機制:
    • A Simple Plugin Framework 講解了一種很是聰明而簡單的辦法來爲代碼提供插件接口。若是參考Java社區的相似框架,則有Java Plug-in Framework (JPF)以及OSGi標準。
    • 另外limodou先生在Ulipad中實現插件和MixIn的機制也十分簡單有效,見[NewEdit]設計說明(一)--概述,固然在UliPad最新版本的代碼中對這個機制的實現又有實用的改進。(發佈插件則有很多項目採用Python Eggs
    • 比較複雜的應用程序則可使用Zope Component Architecture這樣的機制來實現靈活易用的擴展接口(注意:zca雖然是Zope平臺的一個組成部分,但其自身是不須要依賴Zope平臺便可使用的)。

3.  經常使用工具

  • http://www.scons.org/ Java有Ant這個巨火的構建工具,Python的特性容許咱們構建更新類型的構建工具,就是scons了。
  • Python Sidebar for Mozilla FireFox的一個插件,提供一個用來查看Python文檔、函數庫的側邊欄。
  • IPython 很好用的Python Shell。
  • Easy Install 快速安裝Python模塊的易用性解決方案(使用這種方式發行的包一般以Python Eggs的格式被Easy Install自動處理)。有人推薦先用 virtualenv 建個虛擬python環境再使用 easy_install (以後就不用加 --prefix參數了)。

3.1  Python IDE

個人IDE選擇經驗 其實我如今只用Vim和Pydev了html

  • Pydev 基於Eclipse的,很是棒的Python環境,改進速度很是快,如今是我最喜歡的IDE。
  • ulipad Python+wxPython實現的輕量級全功能跨平臺IDE,很是好用。作一些簡單小東西的時候我會用這個。
  • Eric Python IDE 基於QT實現的很是不錯的跨平臺PYTHON IDE。支持調試,支持自動補全,甚至也支持重構。若是沒有ulipad,而且在個人gnome下基於QT的Eric界面別走形的話,我會選這個。
  • Spyder 幾乎是個輕量化的 Eric ,也是基於 QT 和 QScintilla2 實現。它是科學計算包 python(x,y) (集成了科學計算經常使用的python第三方庫,有400多M)的一個組成部分。
  • http://www.xored.com Trustudio 一個基於Eclipse的、同時支持Python和PHP的插件,曾經是我最喜歡的Python IDE環境,功能至關全了,不過試用時感受有些細節不完善以至不大好用。
  • http://www-900.ibm.com/developerWorks/cn/opensource/os-ecant/index.shtml 用 Eclipse 和 Ant 進行 Python 開發
  • http://www.scintilla.org/ 同時支持Win和Linux的源代碼編輯器,彷佛支持Python文件的編輯。
  • http://boa-constructor.sourceforge.net/ 著名的基於WxPython的GUI快速生成用的Python IDE,可是開發進度實在太差了……
  • http://pype.sourceforge.net/ 成熟的Python代碼編輯器,號稱功能介於EMACS和IDLE之間的編輯器。
  • http://www.stani.be/python/spe SPE:號稱是一個Full Featured編輯器,集成WxGlade支持GUI設計。
  • eggy 用Python和QT實現的Python IDE,聽說輕量又好用~

3.2  內置類庫使用參考

  • Python正則表達式操做指南
    • 爲方便調試正則表達式,能夠用KODOS(基於 PyQT )、kiki(基於 wxPython )、Pyreb(基於 wxPython )中的任何一個來輔助。
    • 我目前用的是 kiki,但最近它的官方網站登錄不上去,我從 Debian 包把它的源碼扒出來,應用了 stani 作的wxPython 2.8 兼容性補丁,而且用py2app把它封裝成 Mac 應用程序供 QuickSilver 調用。修改之後的源代碼包下載

3.3  經常使用第三方類庫

  • NumPy Python的數學運算庫,有時候一些別的庫也會調用裏面的一些功能,好比數組什麼的;
  • Pil Python下著名的圖像處理庫Pil;
  • SimPy 利用Python進行仿真、模擬的解決方案;
  • Matplotlib 聽說是一個用來繪製二維圖形的Python模塊,它克隆了許多Matlab中的函數, 用以幫助Python用戶輕鬆得到高質量(達到出版水平)的二維圖形;
    • Graphviz 與 Matplotlib 不一樣,這個東西能畫:有向圖、網絡結構、有限狀態機等等。自己不是 Python 實現的,可是能找到 Python 封裝。
  • Crypto python的加解密擴展模塊;
  • Python for CJK 提供與python有關的CJK語言支持功能:轉碼、顯示之類。
  • Psyco、Pyrex:兩個用於提升Python代碼運行效率的解決方案;若是對性能還不滿意,能夠試試這樣:用 Python 寫本身的 C Module
  • PyflakesPyCheckerPyLint:都是用來作Python代碼語法檢查的工具。
  • 圖形界面開發庫:
    • wxPython 基於wxWindows的易用且強大的圖形界面開發包wxPython;wxPython發行版還自帶了PyCrust、PyShell、PyAlaCarte和PyAlaMode等幾個工具,分別是圖形界面Shell和代碼編輯器等,分別具備不一樣特色能夠根據本身的須要選用。
    • PyQt 通常認爲綜合各平臺上的表現,PyQt比wxPython能提供更爲可靠的表現,較少遇到稀奇古怪的Bug。只是Qt雖然LGPL了,但是PyQt對商業軟件仍然是收費的,Nokia剛開始作LGPL的Qt綁定——PySide,可是還談不上成熟。
      • 在Mac上安裝PyQt的詳細步驟 PyQt在Win和Linux上都有可直接安裝的二進制包,只有Mac沒有。不過按照這篇文檔來作,也是不難(我已試過,一切靠譜)。
    • PyGtk Qt永遠的競爭者,在Win和Linux下表現都還不錯,Mac下新的本地化移植繞過了系統自帶的X11服務,性能大爲提高,只是對輸入法和字體支持等還有欠缺。
  • Tornado 非阻塞、高性能、可擴展的 Web Server 實現,源自FriendFeed
  • http://avc.inrim.it/html/ 比MVC模式更方便易用的開發框架,主要是幫助透明地完成界面控件與後臺數據之間的內容綁定。該框架支持GTK、QT、TK、wxWidgets等主要具備Python封裝的GUI開發框架。
  • pygame 用Python幫助開發遊戲的庫,也能夠用這個來播放視頻或者音頻什麼的,大概依靠的是SDL;
  • py2exe win下將Python程序編譯爲可執行程序的工具,是一個讓程序脫離Python運行環境的辦法,也能夠生成Windows服務或者COM組件。其餘能完成Python腳本到可執行文件這個工做的還有Gordon McMillan's Installer、Linux/Unix專用的freeze、Mac專用的py2app,另外setuptools可能也能幫上點。不過此類工具不免與一些模塊有一些兼容性的問題,須要現用現測一下。總之這個主題能夠參考How to Distribute Commercial Python Applications
  • 嵌入式數據庫:BerkeleyDB的Python版,固然還有其餘的好多。
  • PEAK提供一些用於實現自動化集羣測試的重要基礎類庫,好比超輕量線程框架、分佈式代碼執行等。
    • greenlet 是PEAK給出的一種進程內的線程模型實現,自稱是Stackless項目的副產品。其實這是一種僞線程,也就是說greenlet間切換須要明確指定下一步切換到哪塊指令繼續執行,而沒有被執行的代碼就被暫時掛起了。這裏面greenlet間的執行順序是徹底肯定的,而且是非併發的,就不能解決長時間大量資源佔用的操做會致使程序無響應的問題。但greenlet能夠用來減小資源死鎖、互斥形成的資源消耗(代碼被阻塞時,能夠切換先去執行其餘未被阻塞的部分),所以用來響應按鈕點擊等是挺好用的。
      • greenlet 如今再也不是 pylib 的組成部分了,而是一個獨立的名爲 greenlet 的 pypi 包,能夠經過 easy_install 安裝。
    • Eventlet 是基於 greenlet 完成的一個高併發網絡庫,提供「線程」池、消息隊列等許多很是方便的機制,比直接用 greenlet 要方便得多。而且 Eventlet 源自著名的虛擬現實項目——第二人生,是通過現實考驗的可靠解決方案。
  • Pyro 一個Python的分佈式對象系統,提供面向對象風格的RPC功能。
  • PycURL 傳說這是實現Python下多線程網頁抓取的效率最高的解決方案,本質是對libcurl C語言庫的封裝。其實Twisted也能夠定製成爲一個網頁抓取工具的。
  • Protocol Buffers Google提供的高效數據序列化解決方案,比基於XML的數據序列化方案在數據大小和編解碼效率上都大約高一個數量級。固然,Google本身也說這種辦法也不是用哪都合適,一來Protocol Buffers不大適合用來處理格式化的文本,另外一方面其本質是一個傳輸協議的生成語言,可能在傳輸的內容相對固定時,才值得專門生成一套這樣的解析器。
  • pyinotify 利用操做系統自身提供的Notify機制以最高的效率監控文件變化。
  • Scrapy 是一個網絡爬蟲框架,能夠很是容易地經過定製規則獲得所需的爬網器。基於 Twisted 實現。
  • chardet 一個猜想網頁編碼(好比utf-8仍是gb18030)的庫,會根據HTTP參數、HTML標籤、XML標籤中的相關聲明來進行猜想。另有一個非Python實現的Enca也能夠提供相似的功能。
  • JPype Python裏調用Java類庫、Java代碼的橋接解決方案(因Limodou在ChinaUnix上說起而得知)。JPype使用要點
  • µTidylib 著名html整理、排錯、自動修正工具HTML Tidy Library的Python封裝。一般在正式開始分析html以前,先用這個東西預處理一下,後面的工做會輕鬆、準確得多~
  • Fudge 被HD的項目組認爲是最好的Python Mock模塊(也即冒煙測試)。
  • nose 測試腳本自動發現、自動執行輔助工具。文檔見nose documentation
  • Coverage.py Python 測試代碼覆蓋率統計工具,已經內置於 nose 。
  • Heapy 對 Python 程序進行內存佔用剖析的模塊,Guppy-PE 項目的組成部分之一,被 Scrapy 等項目用做內存泄露的調試工具。相似的還有:
    • PySizer,感受已經太舊了。
    • Dowser,和 Heapy 特色不太同樣,而且使用CheeryPy做爲調試結果的輸出界面。
  • Gluttony Python 模塊之間依賴關係圖的自動生成工具。

3.4  其餘東西

  • http://www.forum.nokia.com/main/0,,034-821,00.html Nokia竟然發佈了在Series 60系統上運行Python程序(圖形界面用wxPython)的庫,還有一個Wiki頁是關於這個的:http://www.postneo.com/postwiki/moin.cgi/PythonForSeries60 。Python4Symbian這個頁面是記錄的個人使用經驗。
  • pyre:使用Python完成高性能計算需求的包,真的能夠作到麼?還沒研究。
  • Parallel Python:純Python的並行計算解決方案。相關中文參考頁面
  • Pexpect:用Python做爲外殼控制其餘命令行程序的工具(好比Linux下標準的ftp、telnet程序什麼的),尚未測試可用程度如何。
  • pyjamas:Google GWT的Python克隆,還處在早期版本階段。
  • Durus:Python的對象數據庫,固然也能夠做爲一種對象實例持久化的機制來使用;這是一個開源的純Python實現,並提供一個可選的C語言插件來大幅提升運行效率。
    • Missile DB:一種 Python 的、簡潔高效的 DBMS,自稱是Durus的一種衍生品,更可以適應Stackless Python環境。同時也是併發性能極高的Eurasia3項目的一個子項目。
  • ey-lessql:收集的各類分佈式鍵值數據庫的Python版驅動。若是不考慮Python驅動的問題,A Yes for a NoSQL Taxonomy是一個很是完整的非SQL數據存儲引擎列表。
  • pyzmq:消息隊列 zerozmq 的 Python 封裝,基本上這是一個追求性能爲主的消息隊列實現,所有數據在內存中保存。若是擔憂數據持久化的問題,能夠考慮RabbitMQ 等相似方案。另據傳聞,Twitter已經由RabbitMQ轉換到Kestrel
  • Mulib 和 restish 都是基於 Python 實現的 REST 風格網絡服務框架。
  • Scapy:彷佛是一個可以控制底層網絡封包的交互式Python工具,對網絡協議分析應該頗有用。

3.5  有意思的東西

  • Howie:用Python實現的MSN對話機器人。
  • Cankiri:用一個Python腳本實現的屏幕錄像機。

3.6  普通但沒準有用的東西

  • pyForum:純Python實現的論壇程序中最接近實用程度的一個,基於web2py實現。
相關文章
相關標籤/搜索