2016年5月15日 星期日

python 研究-常用的第三方函式庫及工具參考

一些有用的Python函式庫列表
本篇轉載 http://blog.ez2learn.com/2010/04/24/useful-python-libraries/
僅作為個人筆記參考

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

沒有留言:

張貼留言