adodb:我们领导推荐的数据库连接组件
bsddb3:BerkeleyDB的连接组件
Cheetah-1.0:我比较喜欢这个版本的cheetah
cherrypy:一个WEB framework
ctypes:用来调用动态链接库
DBUtils:数据库连接池
django:一个WEB framework
docutils:用来写文档的
dpkt:数据包的解包和组包
MySQLdb:连接MySQL数据库的
py2exe:用来生成windows可执行文件
Pylons:我们领导推荐的web framework
pysqlite2:SQLite的连接组件
pythonwin:Python的Windows扩展
setuptools:无奈,PEAK的一套python包管理机制
sqlalchemy:数据库连接池
SQLObject:数据库连接池
twisted:巨无霸的网络编程框架
wxPython-2.6:因为需要保持与linux相同的版本才没用最新的,GUI编程框架
pypcap:抓包的
python-dnet:控制网络安全的其他设备
pyevent:Python的事件支持
pydot:画图的,graphiz
sendpkt:Python发包
simplejson:JSON的支持
DPKT:raw-scoket网络编程
Cx-oracle:连接oracle的好东东
Mechanize:爬虫连接网站常用
PIL:图像处理工具包
reportlab for PDF 文件。
PyQt4 for GUI界面
feedparser: rss解析
chardet:编码检测
scons: 项目构建工具,写好了模板用起来还是很方便的
scapy: 网络包构建分析框架,可编程的wireshark,有兴趣的google “Silver Needle in the Skype”
pefile: windows pe文件解析器
winpdb: 自己的程序或者用别的库不太明白的时候就靠它了
pywmi: 省了好多折腾功夫
pylint: 培养良好的编码习惯
下面是准备用的,不做评论:
pygccxml
pyparsing
pymacs
idapython
paimei
pysvn
pyLucene
wikidpad
1.Karrigellhttp://karrigell.sourceforge.net/
1.The Standard Python Libary http://effbot.org/librarybook/
1.Python操作PDF的Libaryhttp://reportlab.org/
1.Python cURL Libaryhttp://pycurl.sourceforge.net/
1.urlgrabberhttp://linux.duke.edu/projects/urlgrabber/
1.MySQL-Pythonhttp://mysql-python.sourceforge.net/
1.pyScripter
2.Python for Delphihttp://mmm-experts.com/Products.aspx
1.Python Cookbookhttp://aspn.activestate.com/ASPN/Python/Cookbook/
1.pygamehttp://www.pygame.org/news.html
1.pymediahttp://www.pymedia.org
1.pydbfhttp://dbfpy.sourceforge.net/
1.Pexpecthttp://pexpect.sourceforge.net/
1.dabo
desktop application frameworkshttp://dabodev.com/
1.pySerial
http://pyserial.sourceforge.net/
http://wiki.woodpecker.org.cn/moin/PySerial
1.python’s doc
http://wiki.woodpecker.org.cn/moin/PythonZhDoc
1.The Visual Module of VPython(3D)
http://vpython.org/index.html
1.PyLucene
http://pylucene.osafoundation.org/
1.DBUils
http://www.webwareforpython.org/DBUtils
1.http://happyiww.popo.blog.163.com/blog/
a good people’s blog
1.AppleScript,OSAComponents,HtmlCalendar
http://freespace.virgin.net/hamish.sanderson/index.html
1.Pypcap
http://code.google.com/p/pypcap/
http://monkey.org/~dugsong/dpkt/
http://www.winpcap.org/install/default.htm
python-memcached client module for memcached
Kodos,python的正则表达式调试工具,
PLY (Python Lex-Yacc)
http://www.dabeaz.com/ply/
正在用它写汇编器.
wxPython - GUI Framework
omniORBpy - CORBA Library
ZODB3 - an OODB implement
ReportLab - PDF generating solution
numpy+scipy+matplotlib
hachoir 各种多媒体元数据解析
python-orge 演示用
数据库的:
sqlalchemy
sqlobject
MySQL-python (easy_install的时候就是这个名字)
routes
beaker
两个模板引擎:
genshi
mako
paster
另外还有知道的
PyCrypto 加密的
paramiko 这个可以帮你写sftp,比twisted里面的那个好用一些
twisted 写服务器玩的
PyOpenGL
PyGame
Psyco 传说可以加速你的python程序
PIL (Python Image Library) 处理图片
PyObjC 这个是苹果上用的,写Cocoa程序
Python desktop client GUI application:
wxPython
PyOpenGL
PyXML
ZSI
davlib.py
ChartDirector
一个支持多种语言的图表库,无论是效果还是效率,都比jfreechart高。
############### 自己补充一下 ##################
游戏3Dpyglet、pythonOgre、blender(c),k-3d(c++),vpython,panda3d
===============================================
python包包收集catswhocode.com 的jbj
Tkinter———— Python默认的图形界面接口。
Tkinter是一个和Tk接口的Python模块,Tkinter库提供了对 Tk API的接口,它属于Tcl/Tk的GUI工具组。Tcl/Tk是由John Ousterhout发展的书写和图形设备。Tcl(工具命令语言)是个宏语言,用于简化shell下复杂程序的开发,Tk工具包是和Tcl一起开发的, 目的是为了简化用户接口的设计过程。Tk工具包由许多不同的小部件,如一个按钮、一个滚动条等。通过Tk提供的这些小部件,我们就可快速地进行GUI开 发。Perl、Scheme等语言也利用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程序员可在程序中集成2D和3D的图形。
NumPy、NumArray和SAGE———— NumArray是Python的一个扩展库,主要用于处理任意维数的固定类型数组,简单说就是一个矩阵库。它的低层代码使用C来编写,所以速度的优势很 明显。NumPy是Numarray的后继者,用来代替NumArray。SAGE是基于NumPy和其他几个工具所整合成的数学软件包,目标是取代 Magma, Maple, Mathematica和Matlab 这类工具。
MySQLdb模块———— 用于连接MySQL数据库。还有用于zope的ZMySQLDA模块,通过它就可在zope中连接mysql数据库。
PyGTK ———— 用于python GUI程序开发的GTK+库。GTK就是用来实现GIMP和Gnome的那个库。有了它,你完全可以自信的尝试自己制造Photoshop
PyQt ———— 用于python的Qt开发库。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)。可在Windows和Linux平台下使用。
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。
原文地址:http://xinsync.xju.edu.cn/index.php/archives/4401
============================================
我常用的几个第三方 Python 库收藏作者:赖勇浩(http://blog.csdn.net/lanphaday)
xPython
如果你之前是windows程序员,用MFC或者WIN32API开发界面程序,那进入Python国度最好的GUI选择应该是wxPython。它是wxWidgets的Python Bind,与wxWidgets的开发完美同步,最为重要的一点是它的消息机制与MFC颇为相似,以前在MFC的经验完全可以稍作变化就套用在wxPython上面。在WIN32开发中,最讨厌的一环肯定有WM_SIZE消息的处,在主窗口大小变化的时候,保持控件布局在WIN32是一件麻烦事。这件事情wx解决得非常完美,它的sizer概念可以让我轻松地在不同窗口尺寸的情况下保持完美的控件布局。另外如果你已经讨厌了MFC的doc-view模型,wx也可以给你一个新的选择;如果你非常喜欢doc-view模型,放心,在wx中仍然可以轻松实现,以前的思想依然可以在这里发挥余热。
wxPython有两个封装,一个PythonCard,另一个是dabo。前者是wxPython的有限封装,不支持wxPython的全部特性,它的目标是让wxPython更加Pythonic。后者比PythonCard要庞大不少,确切来说,它应该是一个三层架构的C/S模式的开发框架。如果你想开发基于数据库的应用(如MIS、ERP等)用dabo是一个不错的选择;另外,如果你之前习惯了VB、VFP、Delphi等RAD开发环境,dabo并不比这些昂贵的工具差多少哦!
py2exe
按照邪恶的windows思维,编写的应用如果不编译出一个.exe文件恐怕是算不得“软件”的,py2exe作用正是把你的.py脚本变成.exe文件,通常它会把脚本打包到一个.zip文件中去,但也你可以通过修改setup.py脚本把所有的脚本、依赖的dll等全部打包到一个exe中去,看起来跟VC、VB编译出来的程序没有什么两样!
如果你的客户需要在windows下使用你的应用程序,py2exe是你不可或缺的工具。我就是用它打包由 wxPython 写的小工具给公司里的游戏策划用的。
psyco
脚本的执行效率多少有点差强人意,虽然优化起来并不是难事,但如果有简单的方法,近乎不用修改源代码,那当然值得去关注一下。psyco的神奇在于它只需要在代码的入口处调用短短两行代码,性能就能提升40%或更多,真可谓是立竿见影!
如果你的客户觉得你的程序有点慢,敬请不要急着去优化代码,psyco或许能让他立即改变看法。psyco堪称Python的jit,有许多潜力可以挖掘,如果剩下来给你优化性能的时间已经不多,请马上去阅读它的手册,有许多招儿轻松优化性能。
PIL
PIL是Python的图像处理库,我的看法是强到没得说,简单到没得说。它可以打开数十种图像格式,常见的jpg/png/bmp等当然不在话下;此外还提供许多图像处理函数,如图像增强、滤波算法等,详情可以参考我以前的一篇文章《用Python做图像处理》(http://blog.csdn.net/lanphaday/archive/2007/10/28/1852726.aspx)和《计算图像相似度》(http://blog.csdn.net/lanphaday/archive/2008/04/24/2325027.aspx)。
MySQLdb
这是Python对开源数据库Mysql的支持,官网在http://sourceforge.net/projects/mysql-python。支持Mysql 3.23-5.1全系列版本,Python版本的要求是2.3-2.5。MySQLdb是Python DB API-2.0的实现,现在已经很成熟了。最新的版本是1.2.2。
如果从事服务器开发,那少不得跟数据库连接池打交道,这时你可以使用DBUtils或jonpy两个开源程序库。其中DBUtils是一套数据库连接池库,而jonpy则包括了CGI以及数据库连接池等多个功能,请在阅读手册后选择合适的自己库。
pyprocessing
Python解释器里的GIL(全局解释器锁)使得Python在多核时代有点尴尬——这个支持原生线程的脚本语言竟然不能通过多线程利用多个CPU内核同时并发计算。pyprocessing没有尝试去除GIL,而是剑走偏锋,尝试从多进程的方式来帮助Python走出困境。结果就是使用pyprocessing创建进程和进程间通信不仅像使用内置的threading模块那么简单,甚至还更加简单。pyprocessing不仅可以通过本机socket和管道进行通信,而且封装得极为完美,它的Queue实现用起来跟内置的Queue没啥两样,但它是一个进程间共享的队列哦!
pyprocessing在py2.6和py3.0中已经作为内置模块了,也算是开发社区对pyprocessing项目的肯定吧。如果你用Python开发服务器应用,特别是网络游戏这样的应用,pyprocessing怎么可以不去关注一下!
=============================================================================
Python模块安装
1. 单文件模块
直接把文件拷贝到$python_dir/lib
2. 多文件模块,带setup.py
python setup.py install
3. egg文件
1) 下载ez_setup.py,运行python ez_setup
2) easy_install *.egg
虽然Python的模块可以拷贝安装,但是一般情况下推荐制作一个安装包,即写一个setup.py文件来安装。
setup.py文件的使用:
% python setup.py build #编译
% python setup.py install #安装
% python setup.py sdist #制作分发包
% python setup.py bdist_wininst #制作windows下的分发包
% python setup.py bdist_rpm
setup.py文件的编写
setup.py中主要执行一个 setup函数,该函数中大部分是描述性东西,最主要的是packages参数,列出所有的package,可以用自带的find_packages来动态获取package。所以setup.py文件的编写实际是很简单的。
简单的例子:
setup.py文件
from setuptools import setup, find_packagessetup(
name = " mytest " ,
version = " 0.10 " ,
description = " My test module " ,
author = " Robin Hood " ,
url = " http://www.csdn.net " ,
license = " LGPL " ,
packages = find_packages(),
scripts = [ " scripts/test.py " ],
)
mytest.py
import sysdef get():
return sys.path
scripts/test.py
import osprint os.environ.keys()
setup中的scripts表示将该文件放到 Python的Scripts目录下,可以直接用。
OK,简单的安装成功,可以运行所列举的命令生成安装包,或者安装该python包。
本机测试成功(win32-python25)!
==============================================================
setuptools它可以自动的安装模块,只需要你提供给它一个模块名字就可以,并且自动帮你解决模块的依赖问题。一般情况下用setuptools给安装的模块会自动放到一个后缀是.egg的目录里。
首先,安装setuptools这个东西,先去下载一个脚本: http://peak.telecommunity.com/dist/ez_setup.py 下载完后直接执行它就会帮你把setuptools给装好。
之后,安装模块的使用方法就是使用一个叫easy_install的命令,在Windows里,这个命令在python安装目录下的scripts里面,所以需要把scripts加到环境变量的PATH里,这样用起来就更方便,linux下不需要注意这个问题。
安装软件只需要执行:easy_install 模块名
===================================================
pyinstaller 来建立linux下的python独立执行文件
以下内容假定已安装好Python 2.4/2.5
一、下载并编译pyinstaller(只需做一次,以后可直接做第二步)
1.下载pyinstaller,现在的版本是1.3
(1)wget http://pyinstaller.hpcf.upr.edu/source/1.3/pyinstaller_1.3.tar.gz
2.解包进入源码目录
(1)tar zxv pyinstaller_1.3.tar.gz
(2)cd pyinstaller-1.3/source/linux
3.编译源代码
(1)python Make.py 生成python的 .pyc文件
如无错误,则出现如下提示(只有一行):
Now run "make" to build the targets: ../../support/loader/run ../../support/loader/run_d
(2)make 连接生成linux的 .o 文件
4.生成编译配置文件
(1)python Configure.py 生成config.dat配置文件
二、编译独立运行的python可执行文件
1.生成spec文件
python pyinstaller-1.3/Makespec.py --onefile --upx linuxlaptop.py
参数说明:
--onefile 生成单文件
--upx 生成压缩的文件(可减小执行文件体积,需先安装upx软件包)
2.生成最终的可执行文件
python pyinstaller-1.3/Build.py linuxlaptop.spec
执行完成后将在当前目录生成可执行的linuxlaptop文件,如有问题欢迎与我交流:linuxlaptop.cn。
========================================================================
用cx_Freeze把python打包成exe可执行文件
以前从来没有试过把Python打包,昨天试了试,发现打包也是一件挺容易的事情.Python打包有很多种选择.cx_Freeze是一种, py2exe也可以,还有一个pyinstaller.我用的是cx_Freeze,而py2exe因为sf实在太慢连不上.所以没办法,只好先用可以下载的.cx_Freeze的资料比较少,不过不是太痛苦,因为好像cx会比py2exe简便易用,而且好像是跨平台的,不错不错.
cx_Freeze的用法就一个命令FreezePython.exe,打包也很快捷:
FreezePython.exe --install-dir="/your/path/to/install"app.py
然后就会把app.py以及其依赖的所有模块,包和库全部归整后放到--install-dir所指的路径下.
碰到两个问题,一个是文件编码,一开始总是说找不到gb2312的编码,后面google了一下,发现要这么做:
在app.py中添加from encodings import gbk一句,然后就可以了.
如果用到了gettext,要注意po文件中的
"Content-Type: text/plain; charset=gbk/n"
"Content-Transfer-Encoding: cp936/n"
这两句要这样写,字符集要用gbk,不要用gb2312.
另一个问题是控制台隐藏:
默认cx_Freeze打包后都是控制台程序,就算你打包一个wxPython程序,也会有一个黑黑的控制台在后面做背景,要去掉控制台就要这样:
FreezePython.exe --install-dir="/your/install/path" --base-binary=Win32GUI.exe app.py
加了--bash-binary后就可以只运行前台的界面了,不过如果程序出错,会弹出一个错误对话框,说找不到traceback模块.
这就要在app.py文件中加一句:
import traceback
把错误反馈以对话框形式弹出.
adodb:我们领导推荐的数据库连接组件
bsddb3:BerkeleyDB的连接组件
Cheetah-1.0:我比较喜欢这个版本的cheetah
cherrypy:一个WEB framework
ctypes:用来调用动态链接库
DBUtils:数据库连接池
django:一个WEB framework
docutils:用来写文档的
dpkt:数据包的解包和组包
MySQLdb:连接MySQL数据库的
py2exe:用来生成windows可执行文件
Pylons:我们领导推荐的web framework
pysqlite2:SQLite的连接组件
pythonwin:Python的Windows扩展
setuptools:无奈,PEAK的一套python包管理机制
sqlalchemy:数据库连接池
SQLObject:数据库连接池
twisted:巨无霸的网络编程框架
wxPython-2.6:因为需要保持与linux相同的版本才没用最新的,GUI编程框架
pypcap:抓包的
python-dnet:控制网络安全的其他设备
pyevent:Python的事件支持
pydot:画图的,graphiz
sendpkt:Python发包
simplejson:JSON的支持
DPKT:raw-scoket网络编程
Cx-oracle:连接oracle的好东东
Mechanize:爬虫连接网站常用
PIL:图像处理工具包
reportlab for PDF 文件。
PyQt4 for GUI界面
feedparser: rss解析
chardet:编码检测
scons: 项目构建工具,写好了模板用起来还是很方便的
scapy: 网络包构建分析框架,可编程的wireshark,有兴趣的google “Silver Needle in the Skype”
pefile: windows pe文件解析器
winpdb: 自己的程序或者用别的库不太明白的时候就靠它了
pywmi: 省了好多折腾功夫
pylint: 培养良好的编码习惯
下面是准备用的,不做评论:
pygccxml
pyparsing
pymacs
idapython
paimei
pysvn
pyLucene
wikidpad
1.Karrigellhttp://karrigell.sourceforge.net/
1.The Standard Python Libary http://effbot.org/librarybook/
1.Python操作PDF的Libaryhttp://reportlab.org/
1.Python cURL Libaryhttp://pycurl.sourceforge.net/
1.urlgrabberhttp://linux.duke.edu/projects/urlgrabber/
1.MySQL-Pythonhttp://mysql-python.sourceforge.net/
1.pyScripter
2.Python for Delphihttp://mmm-experts.com/Products.aspx
1.Python Cookbookhttp://aspn.activestate.com/ASPN/Python/Cookbook/
1.pygamehttp://www.pygame.org/news.html
1.pymediahttp://www.pymedia.org
1.pydbfhttp://dbfpy.sourceforge.net/
1.Pexpecthttp://pexpect.sourceforge.net/
1.dabo
desktop application frameworkshttp://dabodev.com/
1.pySerial
http://pyserial.sourceforge.net/
http://wiki.woodpecker.org.cn/moin/PySerial
1.python’s doc
http://wiki.woodpecker.org.cn/moin/PythonZhDoc
1.The Visual Module of VPython(3D)
http://vpython.org/index.html
1.PyLucene
http://pylucene.osafoundation.org/
1.DBUils
http://www.webwareforpython.org/DBUtils
1.http://happyiww.popo.blog.163.com/blog/
a good people’s blog
1.AppleScript,OSAComponents,HtmlCalendar
http://freespace.virgin.net/hamish.sanderson/index.html
1.Pypcap
http://code.google.com/p/pypcap/
http://monkey.org/~dugsong/dpkt/
http://www.winpcap.org/install/default.htm
python-memcached client module for memcached
Kodos,python的正则表达式调试工具,
PLY (Python Lex-Yacc)
http://www.dabeaz.com/ply/
正在用它写汇编器.
wxPython - GUI Framework
omniORBpy - CORBA Library
ZODB3 - an OODB implement
ReportLab - PDF generating solution
numpy+scipy+matplotlib
hachoir 各种多媒体元数据解析
python-orge 演示用
数据库的:
sqlalchemy
sqlobject
MySQL-python (easy_install的时候就是这个名字)
routes
beaker
两个模板引擎:
genshi
mako
paster
另外还有知道的
PyCrypto 加密的
paramiko 这个可以帮你写sftp,比twisted里面的那个好用一些
twisted 写服务器玩的
PyOpenGL
PyGame
Psyco 传说可以加速你的python程序
PIL (Python Image Library) 处理图片
PyObjC 这个是苹果上用的,写Cocoa程序
Python desktop client GUI application:
wxPython
PyOpenGL
PyXML
ZSI
davlib.py
ChartDirector
一个支持多种语言的图表库,无论是效果还是效率,都比jfreechart高。
############### 自己补充一下 ##################
游戏3Dpyglet、pythonOgre、blender(c),k-3d(c++),vpython,panda3d
===============================================
python包包收集catswhocode.com 的jbj
Tkinter———— Python默认的图形界面接口。
Tkinter是一个和Tk接口的Python模块,Tkinter库提供了对 Tk API的接口,它属于Tcl/Tk的GUI工具组。Tcl/Tk是由John Ousterhout发展的书写和图形设备。Tcl(工具命令语言)是个宏语言,用于简化shell下复杂程序的开发,Tk工具包是和Tcl一起开发的, 目的是为了简化用户接口的设计过程。Tk工具包由许多不同的小部件,如一个按钮、一个滚动条等。通过Tk提供的这些小部件,我们就可快速地进行GUI开 发。Perl、Scheme等语言也利用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程序员可在程序中集成2D和3D的图形。
NumPy、NumArray和SAGE———— NumArray是Python的一个扩展库,主要用于处理任意维数的固定类型数组,简单说就是一个矩阵库。它的低层代码使用C来编写,所以速度的优势很 明显。NumPy是Numarray的后继者,用来代替NumArray。SAGE是基于NumPy和其他几个工具所整合成的数学软件包,目标是取代 Magma, Maple, Mathematica和Matlab 这类工具。
MySQLdb模块———— 用于连接MySQL数据库。还有用于zope的ZMySQLDA模块,通过它就可在zope中连接mysql数据库。
PyGTK ———— 用于python GUI程序开发的GTK+库。GTK就是用来实现GIMP和Gnome的那个库。有了它,你完全可以自信的尝试自己制造Photoshop
PyQt ———— 用于python的Qt开发库。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)。可在Windows和Linux平台下使用。
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。
原文地址:http://xinsync.xju.edu.cn/index.php/archives/4401
============================================
我常用的几个第三方 Python 库收藏作者:赖勇浩(http://blog.csdn.net/lanphaday)
xPython
如果你之前是windows程序员,用MFC或者WIN32API开发界面程序,那进入Python国度最好的GUI选择应该是wxPython。它是wxWidgets的Python Bind,与wxWidgets的开发完美同步,最为重要的一点是它的消息机制与MFC颇为相似,以前在MFC的经验完全可以稍作变化就套用在wxPython上面。在WIN32开发中,最讨厌的一环肯定有WM_SIZE消息的处,在主窗口大小变化的时候,保持控件布局在WIN32是一件麻烦事。这件事情wx解决得非常完美,它的sizer概念可以让我轻松地在不同窗口尺寸的情况下保持完美的控件布局。另外如果你已经讨厌了MFC的doc-view模型,wx也可以给你一个新的选择;如果你非常喜欢doc-view模型,放心,在wx中仍然可以轻松实现,以前的思想依然可以在这里发挥余热。
wxPython有两个封装,一个PythonCard,另一个是dabo。前者是wxPython的有限封装,不支持wxPython的全部特性,它的目标是让wxPython更加Pythonic。后者比PythonCard要庞大不少,确切来说,它应该是一个三层架构的C/S模式的开发框架。如果你想开发基于数据库的应用(如MIS、ERP等)用dabo是一个不错的选择;另外,如果你之前习惯了VB、VFP、Delphi等RAD开发环境,dabo并不比这些昂贵的工具差多少哦!
py2exe
按照邪恶的windows思维,编写的应用如果不编译出一个.exe文件恐怕是算不得“软件”的,py2exe作用正是把你的.py脚本变成.exe文件,通常它会把脚本打包到一个.zip文件中去,但也你可以通过修改setup.py脚本把所有的脚本、依赖的dll等全部打包到一个exe中去,看起来跟VC、VB编译出来的程序没有什么两样!
如果你的客户需要在windows下使用你的应用程序,py2exe是你不可或缺的工具。我就是用它打包由 wxPython 写的小工具给公司里的游戏策划用的。
psyco
脚本的执行效率多少有点差强人意,虽然优化起来并不是难事,但如果有简单的方法,近乎不用修改源代码,那当然值得去关注一下。psyco的神奇在于它只需要在代码的入口处调用短短两行代码,性能就能提升40%或更多,真可谓是立竿见影!
如果你的客户觉得你的程序有点慢,敬请不要急着去优化代码,psyco或许能让他立即改变看法。psyco堪称Python的jit,有许多潜力可以挖掘,如果剩下来给你优化性能的时间已经不多,请马上去阅读它的手册,有许多招儿轻松优化性能。
PIL
PIL是Python的图像处理库,我的看法是强到没得说,简单到没得说。它可以打开数十种图像格式,常见的jpg/png/bmp等当然不在话下;此外还提供许多图像处理函数,如图像增强、滤波算法等,详情可以参考我以前的一篇文章《用Python做图像处理》(http://blog.csdn.net/lanphaday/archive/2007/10/28/1852726.aspx)和《计算图像相似度》(http://blog.csdn.net/lanphaday/archive/2008/04/24/2325027.aspx)。
MySQLdb
这是Python对开源数据库Mysql的支持,官网在http://sourceforge.net/projects/mysql-python。支持Mysql 3.23-5.1全系列版本,Python版本的要求是2.3-2.5。MySQLdb是Python DB API-2.0的实现,现在已经很成熟了。最新的版本是1.2.2。
如果从事服务器开发,那少不得跟数据库连接池打交道,这时你可以使用DBUtils或jonpy两个开源程序库。其中DBUtils是一套数据库连接池库,而jonpy则包括了CGI以及数据库连接池等多个功能,请在阅读手册后选择合适的自己库。
pyprocessing
Python解释器里的GIL(全局解释器锁)使得Python在多核时代有点尴尬——这个支持原生线程的脚本语言竟然不能通过多线程利用多个CPU内核同时并发计算。pyprocessing没有尝试去除GIL,而是剑走偏锋,尝试从多进程的方式来帮助Python走出困境。结果就是使用pyprocessing创建进程和进程间通信不仅像使用内置的threading模块那么简单,甚至还更加简单。pyprocessing不仅可以通过本机socket和管道进行通信,而且封装得极为完美,它的Queue实现用起来跟内置的Queue没啥两样,但它是一个进程间共享的队列哦!
pyprocessing在py2.6和py3.0中已经作为内置模块了,也算是开发社区对pyprocessing项目的肯定吧。如果你用Python开发服务器应用,特别是网络游戏这样的应用,pyprocessing怎么可以不去关注一下!
=============================================================================
Python模块安装
1. 单文件模块
直接把文件拷贝到$python_dir/lib
2. 多文件模块,带setup.py
python setup.py install
3. egg文件
1) 下载ez_setup.py,运行python ez_setup
2) easy_install *.egg
虽然Python的模块可以拷贝安装,但是一般情况下推荐制作一个安装包,即写一个setup.py文件来安装。
setup.py文件的使用:
% python setup.py build #编译
% python setup.py install #安装
% python setup.py sdist #制作分发包
% python setup.py bdist_wininst #制作windows下的分发包
% python setup.py bdist_rpm
setup.py文件的编写
setup.py中主要执行一个 setup函数,该函数中大部分是描述性东西,最主要的是packages参数,列出所有的package,可以用自带的find_packages来动态获取package。所以setup.py文件的编写实际是很简单的。
简单的例子:
setup.py文件
from setuptools import setup, find_packagessetup(
name = " mytest " ,
version = " 0.10 " ,
description = " My test module " ,
author = " Robin Hood " ,
url = " http://www.csdn.net " ,
license = " LGPL " ,
packages = find_packages(),
scripts = [ " scripts/test.py " ],
)
mytest.py
import sysdef get():
return sys.path
scripts/test.py
import osprint os.environ.keys()
setup中的scripts表示将该文件放到 Python的Scripts目录下,可以直接用。
OK,简单的安装成功,可以运行所列举的命令生成安装包,或者安装该python包。
本机测试成功(win32-python25)!
==============================================================
setuptools它可以自动的安装模块,只需要你提供给它一个模块名字就可以,并且自动帮你解决模块的依赖问题。一般情况下用setuptools给安装的模块会自动放到一个后缀是.egg的目录里。
首先,安装setuptools这个东西,先去下载一个脚本: http://peak.telecommunity.com/dist/ez_setup.py 下载完后直接执行它就会帮你把setuptools给装好。
之后,安装模块的使用方法就是使用一个叫easy_install的命令,在Windows里,这个命令在python安装目录下的scripts里面,所以需要把scripts加到环境变量的PATH里,这样用起来就更方便,linux下不需要注意这个问题。
安装软件只需要执行:easy_install 模块名
===================================================
pyinstaller 来建立linux下的python独立执行文件
以下内容假定已安装好Python 2.4/2.5
一、下载并编译pyinstaller(只需做一次,以后可直接做第二步)
1.下载pyinstaller,现在的版本是1.3
(1)wget http://pyinstaller.hpcf.upr.edu/source/1.3/pyinstaller_1.3.tar.gz
2.解包进入源码目录
(1)tar zxv pyinstaller_1.3.tar.gz
(2)cd pyinstaller-1.3/source/linux
3.编译源代码
(1)python Make.py 生成python的 .pyc文件
如无错误,则出现如下提示(只有一行):
Now run "make" to build the targets: ../../support/loader/run ../../support/loader/run_d
(2)make 连接生成linux的 .o 文件
4.生成编译配置文件
(1)python Configure.py 生成config.dat配置文件
二、编译独立运行的python可执行文件
1.生成spec文件
python pyinstaller-1.3/Makespec.py --onefile --upx linuxlaptop.py
参数说明:
--onefile 生成单文件
--upx 生成压缩的文件(可减小执行文件体积,需先安装upx软件包)
2.生成最终的可执行文件
python pyinstaller-1.3/Build.py linuxlaptop.spec
执行完成后将在当前目录生成可执行的linuxlaptop文件,如有问题欢迎与我交流:linuxlaptop.cn。
========================================================================
用cx_Freeze把python打包成exe可执行文件
以前从来没有试过把Python打包,昨天试了试,发现打包也是一件挺容易的事情.Python打包有很多种选择.cx_Freeze是一种, py2exe也可以,还有一个pyinstaller.我用的是cx_Freeze,而py2exe因为sf实在太慢连不上.所以没办法,只好先用可以下载的.cx_Freeze的资料比较少,不过不是太痛苦,因为好像cx会比py2exe简便易用,而且好像是跨平台的,不错不错.
cx_Freeze的用法就一个命令FreezePython.exe,打包也很快捷:
FreezePython.exe --install-dir="/your/path/to/install"app.py
然后就会把app.py以及其依赖的所有模块,包和库全部归整后放到--install-dir所指的路径下.
碰到两个问题,一个是文件编码,一开始总是说找不到gb2312的编码,后面google了一下,发现要这么做:
在app.py中添加from encodings import gbk一句,然后就可以了.
如果用到了gettext,要注意po文件中的
"Content-Type: text/plain; charset=gbk/n"
"Content-Transfer-Encoding: cp936/n"
这两句要这样写,字符集要用gbk,不要用gb2312.
另一个问题是控制台隐藏:
默认cx_Freeze打包后都是控制台程序,就算你打包一个wxPython程序,也会有一个黑黑的控制台在后面做背景,要去掉控制台就要这样:
FreezePython.exe --install-dir="/your/install/path" --base-binary=Win32GUI.exe app.py
加了--bash-binary后就可以只运行前台的界面了,不过如果程序出错,会弹出一个错误对话框,说找不到traceback模块.
这就要在app.py文件中加一句:
import traceback
把错误反馈以对话框形式弹出.