libraries and resources of Python

Python的库和资源

由于设计者和开源社区的共同努力,在python中有大量优秀的库可以被直接调用以高效地完成不同需求的工作。这里列举一些常见常用的库:
  Tkinter———— Python默认的图形界面接口。
  Tkinter是一个和Tk接口的Python模块,Tkinter库提供了对Tk API的接口,它属于Tcl/TkGUI工具组。Tcl/Tk是由John Ousterhout发展的书写和图形设备。Tcl(工具命令语言)是个宏语言,用于简化shell下复杂程序的开发,Tk工具包是和Tcl一起开发的,目的是为了简化用户接口的设计过程。Tk工具包由许多不同的小部件,如一个按钮、一个滚动条等。通过Tk提供的这些小部件,我们就可快速地进行GUI开发。PerlScheme等语言也利用Tk库进行GUI开发。Tkinter是跨平台,在各种平台下都能使用。
  Python Imaging Library(PIL)————python提供强大的图形处理的能力,并提供广泛的图形文件格式支持,该库能进行图形格式的转换、打印和显示。还能进行一些图形效果的处理,如图形的放大、缩小和旋转等。是Python用户进行图象处理的强有力工具。
  Pmw(Python megawidgets)Python超级GUI组件集————一个在python中利用Tkinter模块构建的高级GUI组件,每个Pmw都合并了一个或多个Tkinter组件,以实现更有用和更复杂的功能。
  PyXML———— Python解析和处理XML文档的工具包,包中的4DOM是完全相容于W3C DOM规范的。它包含以下内容:
  xmlproc: 一个符合规范的XML解析器。
  Expat: 一个快速的,非验证的XML解析器。 还有其他
  和他同级别的还有 PyHtml PySGML
  PyGame———— 用于多媒体开发和游戏软件开发的模块。
  PyOpenGL———— 模块封装了“OpenGL应用程序编程接口,通过该模块python程序员可在程序中集成2D3D的图形。
  NumPyNumArraySAGE———— NumArrayPython的一个扩展库,主要用于处理任意维数的固定类型数组,简单说就是一个矩阵库。它的低层代码使用C来编写,所以速度的优势很明显。NumPyNumarray的后继者,用来代替NumArraySAGE是基于NumPy和其他几个工具所整合成的数学软件包,目标是取代 Magma, Maple, MathematicaMatlab 这类工具。
  MySQLdb模块———— 用于连接MySQL数据库。还有用于zope ZMySQLDA模块,通过它就可在zope中连接mysql数据库。
  PyGTK ———— 用于python GUI程序开发的GTK+库。GTK就是用来实现GIMPGnome的那个库。有了它,你完全可以自信的尝试自己制造Photoshop
  PyQt ———— 用于pythonQt开发库。QT就是实现了KDE环境的那个库,由一系列的模块组成,有qt, qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml,包含有300个类和超过5750个的函数和方法。PyQt还支持一个叫qtext的模块,它包含一个QScintilla库。该库是 Scintillar编辑器类的Qt接口。
  PyMedia ———— 用于多媒体操作的python模块。它提供了丰富而简单的接口用于多媒体处理(wav, mp3, ogg, avi, divx, dvd, cdda etc)。可在WindowsLinux平台下使用。
  Psyco ———— 一个Python代码加速度器,可使Python代码的执行速度提高到与编译语言一样的水平。
  Python-ldap ———— 提供一组面向对象的API,可方便地在python中访问ldap目录服务,它基于OpenLDAP2.x
  smtplib模块 ———— 发送电子邮件。
  ftplib模块 ———— 定义了FTP类和一些方法,用以进行客户端的ftp编程。我们可用python编写一个自己的ftp客户端程序,用于下载文件或镜像站点。如果想了解 ftp协议的详细内容,请参考RFC959
  xmpppy模块 ———— Jabber服务器采用开发的XMPP协议,Google Talk也是采用XMPP协议的IM系统。在Python中有一个xmpppy模块支持该协议。也就是说,我们可以通过该模块与Jabber服务器通信,是不是很Cool
  下面这些就不详细介绍,只列出名字和功能
  adodb ———— ADO数据库连接组件
  bsddb3 ———— BerkeleyDB的连接组件
  chardet ———— 编码检测
  scons ———— 项目构建工具,写好了模板用起来还是很方便的
  sendpkt ———— Python发包
  setuptools ———— 一套python包管理机制
  Cheetah ———— 构建和扩充任何种类的基于文本的内容
  pycurl ———— URL处理工具
  pydot ———— 画图的,graphiz
  pyevent ———— Python的事件支持
  pylint ———— 培养良好的编码习惯
  Pylons ———— 又一个web framework
  pypcap ———— 抓包的
  pysqlite2 ———— SQLite的连接组件
  python-dnet ———— 控制网络安全的其他设备
  pythonwin ———— PythonWindows扩展
  pywmi ———— 省了好多折腾功夫
  reportlab ———— Python操作PDFLibary
  scapy ———— 网络包构建分析框架,可编程的wireshark,有兴趣的google “Silver Needle in the Skype”
  simplejson ———— JSON的支持
  sqlalchemy ———— SQL数据库连接池
  SQLObject ———— 数据库连接池
  cherrypy ———— 一个WEB framework
  ctypes ———— 用来调用动态链接库
  Cx-oracle ———— 连接oracle的工具
  DBUtils ———— 数据库连接池
  django ———— 一个WEB framework
  DPKT ———— raw-scoket网络编程
  docutils ———— 用来写文档的
  dpkt ———— 数据包的解包和组包
  feedparser ———— rss解析
  Kodos ———— 正则表达式调试工具
  Mechanize ———— 爬虫连接网站常用
  pefile ———— windows pe文件解析器
  py2exe ———— 用来生成windows可执行文件
  twisted ———— 巨无霸的网络编程框架
  winpdb ———— 自己的程序或者用别的库不太明白的时候就靠它了
  wxPython ———— GUI编程框架,熟悉MFC的人会非常喜欢,简直是同一架构
  PIL———— Python 的图像处理库,可以打开数十种图像格式,还提供许多图像处理函数,如图像增强、滤波算法等。
  Pyro———— Python实现与JAVA RMI类似的技术
  PLY———— 基于PythonLEXYACC的语言工具
  Corepy———— 使用Python开发编写x86汇编程序
  LightCloud———— Python实现的分布式的键值数据库
  Parallel PythonPP———— 轻松开发SMP、集群并行计算的库
  开源社区的工作已经完成到这样的程度,基本上各种常见的编程需求都已经有非常成熟稳定高速的模块来实现,你所需要做的,只是去把它找出来然后阅读文档。

  官方主页 http://www.python.org/
  For windows python解释器(包括tkInterGUI开发环境,一个简单的IDE,完整广泛的英文文档)9MBhttp://www.python.org/ftp
 /python/2.4.3/python-2.4.3.msi

the choice of GUI development using python

python进行GUI开发的选择

clip_image002

Python最大的特点就在于她的快速开发功能。作为一种胶水型语言,python几乎可以渗透在我们编程过程中的各个领域。这里简单介绍一下用python进行gui开发的一些选择。

1.      Tkinter

clip_image004

Tkinter似乎是与tcl语言同时发展起来的一种界面库。tkinterpython的配备的标准gui库,也是opensource的产物。Tkinter可用于windows/linux/unix/macintosh操作系统,而且显示风格是本地化的。Tkinter用起来非常简单,python自带的IDLE就是采用它写的。除此外,tkinter的扩展集pmwTix功能上都要相对它强大,但tkinter却是最基本的。我认为,在用pythongui开发,tkinter是最基本的知识,所以这个环节是必须要学习的。你或许在以后的开发中并不常用tkinter,但是一些小型的应用上面,他还是很有用的,而且开发速度也很快。 

2.      WxPython

clip_image005

WxWidgets应该算是近几年了比较流行的GUI跨平台开发技术了。wxWidgets有不同的版本应用,有c++的,也有basic的,现在在python上面也有较好的移植。wxpython的功能上面要强于tkinter,她提供了超过200个类,面向对象的编程风格,设计的框架类似于MFC。对于大型GUI应用上面,wxPython还是具有很强的优势的。boa constructor可以帮助我们快速可视地构建wxwidgets界面。 

3.      PyQT

clip_image006

Qt同样是一种开源的GUI库,Qt的类库大约在300多个,函数大约在5700多个。Qt同样适合于大型应用,由它自带的qt designer可以让我们轻松来构建界面元素。 

4.      pyGtk

clip_image007

GtklinuxGnome的核心开发库了。功能上面非常齐全。值得说明的是,在windows平台下gtk的显示风格并不是特别本地化。不过他带的glade的界面设计器还是可以帮你省不少事的。 

5.      Jython

clip_image008

尝试过用python访问java类库吗,那么就用jython吧。jython其实可以认为是另外一个python开发环境,基于java的,但是大多数的CPython调用jython下还是可以的。你可以在jython环境下像使用java一样来通过python的语法来调用java语言,真的很酷。 

6.      MFC

clip_image010

Windows Pywin32允许你像VC一样的形式来使用PYTHON开发win32应用。代码风格可以类似win32 sdk,也可以类似MFC,由你选择。如果你仍不放弃vc一样的代码过程在python下,那么这就是一个不错的选择。 

7.      PythonCard

clip_image012

PythonCard其实是对wxPython的再封装。不过封装的更加简单,使用起来觉得比wxPython更直观,也更简单化了。 

8.      Dabo

clip_image013

仍是一个基于wxpython的再封装库,没用过,不太了解。它提供数据库访问,商业逻辑以及用户界面。 

9.      AnyGui

clip_image014

通过底层的api来访问其它工具集,像tkinter,wxpythonqt.具体也没怎么用过。

10. WPY

clip_image015

MFC风格的Gui开发库,代码风格也类似于MFC,仅管如此,你依旧可以使用这个库来开发GUI应用,而不用担心平台移植的问题。她同样是一个跨平台的库。 

11. IronPython

clip_image016

如果你要想开发.net下面的应用的话,那么IronPython就是你的选择,与jython有点类似,他同样支持标准的python模块,但同样增加了对.net库的支持。你也可以理解为他是另一个python开发环境。你可以非常方便地使用python语法进行.net应用的开发,这一点听起来真的挺有意思。 

总结

所以:

l  如果你是java用户,那么你就用jython吧,除了可以享受python的模块功能及语法外,你可以找到许多 java的影子;

l  如果你是.net用户,那么就用iron python吧;

l  如果你对Visual C++很熟悉,那么你可以使用MFC,WPY或是wxPython,当然我更建议wxPython了。

l  当然,我认为对于tkinter是每一个原来搞C的人都应该了解和学习的GUI库,因为她很轻便,小型应用就可以使用她来搞定,对于较大型应用可以采用pyGtk,pyQt,WxPython PythonCard来搞定,这样的话,既可以注重知识的衔接性,也可以快速进行软体的开发了