一些有用的Python函式庫列表

Python有豐富的第三方函式庫或是工具,我一直想說要整理一篇列表,今天找了一點時間整理了一下我所知道的或是用過的

視窗GUI開發

  • wxPython 跨平臺的GUI開發函式庫,由wxWidget移植而來,特點是原生介面
  • PyQT 同樣也是著名的跨平臺GUI函式庫,由QT移植而來,可惜的是它是在於GPL條款下,商業用途需要另外買授權
  • PySide 因為PyQT為GPL授權,所以有人另外出來搞了另一套QT的移植,它是在LGPL條款下,因此商業軟體也適合
  • PyGTK GTK的Python移植版

遊戲開發

  • pygame 一款簡單的2D遊戲開發函式庫,主要是基於SDL
  • Python-Ogre 著名Open source 3D遊戲引擎Ogre的Python移植版本
  • pyglet 一款跨平台的多媒體函式庫
  • PyOpenGL OpenGL的python移植
  • Python-Hge 我寫的HGE 2d遊戲引擎的Python移植版,大致上還算可用狀態,有些部份還沒移植完全

網頁開發

  • Flask 基於Werkzeug,以輕量為主要特色的網頁框架,簡單易用,沒有太大負擔,讓人喜愛的一款容易上手的網頁框架
  • Werkzeug 不算是網頁框架,它提供了開發WSGI常會用到的功能,不喜歡什麼都已經準備好的網頁框架,又不想重頭寫起可以試試看
  • Pyramid 這是結合了Pylons和BFG之後的新一代網頁框架,有完備的文件和號稱100%測試覆蓋率著稱
  • TurboGears 集大成的網頁開發框架,它是組合各種合適現成的組件而成的網頁框架,因此藕合度較鬆散,可以抽換掉某些組件,第一版用的組件主要為Cherrypy為網頁伺服器、Kid為預設樣版引擎、SQLObject為ORM,而第二版架構在另一套輕量框架Pylons上,ORM改為SQLAlchemy,預設樣版改為Genshi,並且符合WSGI的規範
  • Django 知名的Python網頁開發框架,不同於TurboGears的集大成,它的框架是自成一體的,所有組件從樣版到ORM都是獨力完成的
  • Web2py 一窾很有趣的網頁框架,它的框架本身就包含了整個完整的開發環境,所有開發都是在它的網頁程式上完成的
  • Webpy 跟Web2py很容易搞混,但其實是另一窾不同的網頁框架
  • BFG 它是從Zope和Plone社群下產生的,用到了不少Zope和Plone抽離出來的技術的樣子,相對於Plone和Zope的痴肥,它的廣告詞是”pay only for what you eat”
  • Pylons Pylons是一款輕量的網頁框架,它所強調的是彈性和快速開發,TurboGears2就是架構在Pylons上的框架
  • Paste 提供一些WSGI相關基礎建設、例如WSGI伺服器、設定檔、部屬等等功能的專案
  • WebOb 將WSGI物件化為Request和Response等物件的函式庫
  • ToscaWidget 將常用的網頁元件,如網頁表單、表格等等變成物件用於方便產生網頁用的函式庫
  • FormEncode 提供表單檢邏輯物件Validator的函式庫
  • Plone 知名的CMS,也就是內容管理系統,可以快速架出專業的網頁來,但缺點是很肥,它架構於Zope上
  • Zope Plone底層的CMS

網頁樣版

  • Kid 一款以XML串流為基礎的樣版引擎,特色是只能寫出合法的網頁,已經停止開發由Genshi繼承
  • Genshi 繼承自Kid的樣版語言,加強了Kid的缺失,增加了更多功能,例如filter可以篩飾XML串流
  • Mako 一款非XML串流的樣版語言
  • jinja 另一款非XML串流式的樣版語言

網路程式開發

  • Twisted 重量級的網路程式開發框架,採用的是非同步的reactor樣式,已經實作大部份常見的Protocol,因此對於快速的伺服器開發來說非常方便
  • Tornado 另一款網路程式的非同步IO框架
  • 其它 Python的網路程式開發框架實在是太多了,多到列不完,也沒有時間一個一個去試,這篇文章 Asynchronous Servers in Python 有列出不少Python的非同步伺服器開發的函式庫可以參考看看
  • pypcap Python抓取網路封包用的函式庫,在windows下需要Winpcap支援
  • dkpt 用於解析網路封包用的函式庫,可以和pypcap用於抓取封包
  • Gevent 一款結合libevent和greenlet的網路函式庫,最大的特色就是使用microthread來處理網路連線

資料庫

  • SQLAlchemy 一款資料庫的Object Relation Mapper函式庫,簡單的來說就是可以將資料庫表格和關聯映射到物件,以方便的物件操作方式來操作資料庫
  • SQLObject 另一款資料庫的ORM
  • Elixir 架構於SQLAlchemy上的ORM,強調於資料表的繼承、多形等等特性

伺服器管理

  • Supervisor 一款用來管理執行daemon process的工具,提供XML-RPC遠端控制界面,運行伺服器程式的最佳選擇
  • Fabric 可以同時對多台主機以SSH連線下指令的工具,對於管理大量伺服器這工具是很有用的工具

其它

  • lxml 極有效率且強大的XML/HTML解析、處理函式庫
  • py2exe 將Python程式包裝成執行檔的工具程式,只限於windows下
  • PyInstaller 另一款Python打包成執行檔的工具,不同的是它不只限於windows,可以跨平台
  • mapnik 支援Python的一款GIS函式庫,可以畫出漂亮的地圖,甚至可以做出像Google map那樣的網頁
  • matplotlib 強大的圖表繪圖函式庫,幾乎你想得到的圖它都畫得出來,而且可以支援多種輸出格式,也可和視窗整合
  • gluttony 我寫的用於找出Python函式庫之間關聯的工具,可以參考這篇文章 Python套件依賴關係圖工具: Gluttony

遺珠之憾

我短時間能想到的都寫上去了,但還有不少還沒在列表中,如果你有知道什麼覺得它應該在列表中,或是發現我寫錯什麼,請給我一個留言,我有空會補上或修正

更新

  • 2011/06/01 新增Flask, Werkzeug, Pyramid, Gevent, Supervisor, Fabric
This entry was posted in Python, 中文文章 and tagged , , , . Bookmark the permalink.

10 Responses to 一些有用的Python函式庫列表

  1. river says:

    感謝您 😉

  2. SCO says:

    請問
    我在http://arcscripts.esri.com/details.asp?dbid=14629此網站下載了這利用Python寫出的程式,我該如何將這程式匯入ARCGIS9.2並且使用?

    我對Python並不是很熟

    希望你能幫幫我

    謝謝你!

  3. Pingback: 一些有用的Python函式庫列表 | Ben's Computer Graphics Blog

  4. pigsign says:

    真的好棒且方便的列表!!!
    讓我一下知道Python原來還有這麼多的好應用^^
    謝謝你~

  5. marr says:

    Zope2 和 Zope3 除了名稱有關外,本質已不同。所有從 Zope3 衍生出來的 framework,例如 Grok、BFG、Pyramid,就是想要追求 agile development 的共同聖杯,所有從 Zope3 衍生出來的方法和工具,例如 component architecture、buildout、known good sets,就是想讓 Python 社群更容易整合。當然,在 egg 和 wsgi 問世之後,這些目標就變得更容易達成。

    最後,Zope2 再怎樣不值一提,也可以考慮寫成
    Zope(2) – Plone(4) 之前使用的底層 Application Server 或 Framework
    (Zope 原生的 CMS 是 CMF,僅管沒人想知道這麼細了)

  6. yehmy says:

    版主相當精通 令人敬佩. 請問 有沒有免費的軟體 可以用來建立 sqlite 3 的報表 ?找很久 一直找不到.

  7. Pingback: Python函式庫列表 - Python教程

  8. 謝謝你 says:

    謝謝你分享的資料,對於不太熟程式的我來說,幫助非常的大.
    我想得到幫助的人不只有我而已.
    雖然你好像遇到一些事情,希望你不要灰心,
    你很厲害,吸取經驗教訓後,捲土重來未可知.
    加油,支持你!!

  9. Pingback: Python – 十分鐘入門