【python3】相關資料庫

轉載自:http://fire01312.iteye.com/blog/703339

Python學習

On this page… (hide)

1.  基本安裝
2.  Python文檔
    2.1 推薦資源站點
    2.2  其他參考資料
    2.3  代碼示例
3.  常用工具
    3.1  Python IDE
    3.2  內置類庫使用參考
    3.3  常用第三方類庫
    3.4  其他東西
    3.5  有意思的東西
    3.6  普通但沒準有用的東西

(Edit Section ↓)
1.  基本安裝

http://www.python.org/ 官方標準Python開發包和支持環境,同時也是Python的官方網站;
http://www.activestate.com/ 集成多個有用插件的強大非官方版本,特別是針對Windows環境有不少改進;

(Edit Section ↓)
2.  Python文檔

Python庫參考手冊
Python Tutorial中文版
Byte of Python 可以代替Tutorial使用,有中文譯版的入門書籍。
Dive into Python 一本比較全面易懂的入門書,中文版翻譯最近進步爲很及時的5.4了。英文版則正在寫針對Python 3.x的版本。
    缺點是此書針對的Python版本比較陳舊,會給出一些過時的優化建議,建議同時閱讀賴勇浩的<Dive into Python>大補貼。
    《深入 Python 3》中文版
Python社區官方建議採用的Python編碼風格(啄木鳥社區上的中文譯文)。相關的代碼檢查工具,參考:用PEP 8檢查Python Coding風格。
    Google SoC 建議的 Python 編碼風格 (Python 編碼風格指南中譯版(Google SOC))
        Google 原版的 Python 編碼風格指南 SoC 的那個指南基本上是在這個上面做的修改和增補。
Zoom.Quiet的文檔集(包括大量Python內容)
豆瓣上的Python相關書籍推薦
Pythonic到底是什麼玩意兒?
啄木鳥社區上的Python資源索引
培訓素材:
    簡單介紹類的可參考:IntroPy和在公司推廣python
    實際編程能力培訓可參考沈仙人對他公司內部的Python培訓素材:前言、基礎篇、面向對象、圖形界面編程、網絡編程

(Edit Section ↓)
2.1 推薦資源站點

Parnassus山的拱頂 巨大的Python代碼庫,包羅萬象。既可以從上面下載代碼參考學習,同時也是與Python有關程序的大列表。
Python號星際旅行船 著名Python社區,代碼、文檔、高人這裏都有。
faqts.com的Python程序設計知識數據庫 Python程序設計知識庫,都是與Python有關的程序設計問題及解決方法。
啄木鳥 Pythonic 開源社區 著名的(也可以說是最好的)國內Python開源社區。
賴勇浩推薦的幾個好玩又有難度的編程網站

(Edit Section ↓)
2.2  其他參考資料

ZDNET文章:學習Python語言必備的資源
各種實用代碼片段
Python編程技巧筆記
如何獲得Python腳本所在目錄的位置
如何方便地給Python環境註冊新類庫
Python幾種併發實現方案的性能比較
Pythonic Web 應用平臺對比 現在個人對web.py(大致和KARRIGELL類似,都是類似於PHP那樣比較簡單的Python Web應用框架)和web2py非常感興趣。近來Zope社區又出現了repoze.bfg這個解決方案,於是做應用時可以自由選用Zope中的合適部分了( Zope 社區的另一個發展方向是Grok,目標是敏捷易用又強大)。另外還有Paste這樣的wsgi參考實現來幫助做自己的框架。
在wxPython下進行圖像處理的經驗 (其實,僅使用wxPython也可以完成很多比較基礎的圖像處理工作,具體可以參照《wxPython in Action》一書的第12節)
序列化存儲 Python 對象
通過win32擴展接口使用Python獲得系統進程列表的方法
py2exe使用中遇到的問題
idle的中文支持問題

(Edit Section ↓)
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平臺即可使用的)。

(Edit Section ↓)
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參數了)。
    Mac下說setuptools版本過低的問題

(Edit Section ↓)
3.1  Python IDE

我的IDE選擇經驗 其實我現在只用Vim和Pydev了

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,據說輕量又好用~

(Edit Section ↓)
3.2  內置類庫使用參考

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

(Edit Section ↓)
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。
Pyflakes、PyChecker、PyLint:都是用來做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服務,性能大爲提升,只是對輸入法和字體支持等還有欠缺。
        先按照Building GTK-OSX安裝GTK-OSX,然後按照Gtk+ Python頁的說明安裝PyGtk即可,非常容易。
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 模塊之間依賴關係圖的自動生成工具。

(Edit Section ↓)
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數據存儲引擎列表。
    NoSQL數據庫探討之一 - 爲什麼要用非關係數據庫?
    NOSQL Patterns
    目前我最感興趣的鍵值數據庫是MongoDB,有人認爲它基本上已經可以替代MySQL所能提供的功能,並且性能更高!
        Ming可能是類似 ORM 對關係數據庫所起作用的 MongoDB 的 Python 封裝?
        pymodels MongoDB 的輕量級 ORM 封裝,它本來是用於 Tokyo Tyrant 和 Tokyo Cabinet 的。
pyzmq:消息隊列 zerozmq 的 Python 封裝,基本上這是一個追求性能爲主的消息隊列實現,全部數據在內存中保存。如果擔心數據持久化的問題,可以考慮RabbitMQ 等類似方案。另據傳聞,Twitter已經由RabbitMQ轉換到Kestrel。
Mulib 和 restish 都是基於 Python 實現的 REST 風格網絡服務框架。
Scapy:似乎是一個能夠控制底層網絡封包的交互式Python工具,對網絡協議分析應該很有用。

(Edit Section ↓)
3.5  有意思的東西

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

(Edit Section ↓)
3.6  普通但沒準有用的東西

pyForum:純Python實現的論壇程序中最接近實用程度的一個,基於web2py實現
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章