python常用类库1.基本安装官方标准Python开发包和支持环境,同时也是Python的官方网站;集成多个有用插件的强大非官方版本,特别是针对Windows环境有不少改进;2.Python文档Python库参考手册PythonTutorial中文版ByteofPython可以代替Tutorial使用,有中文译版的入门书籍。DiveintoPython一本比较全面易懂的入门书,中文版翻译最近进步为很及时的5.4了。英文版则正在写针对Python3.x的版本。缺点是此书针对的Python版本比较陈旧,会给出一些过时的优化建议,建议同时阅读赖勇浩的<DiveintoPython>大补贴。《深入Python3》中文版Python社区官方建议采用的Python编码风格(啄木鸟社区上的中文译文)。相关的代码检查工具,参考:用PEP8检查PythonCoding风格。GoogleSoC建议的Python编码风格(Python编码风格指南中译版(GoogleSOC))Google原版的Python编码风格指南SoC的那个指南基本上是在这个上面做的修改和增补。Zoom.Quiet的文档集(包括大量Python内容)豆瓣上的Python相关书籍推荐Pythonic到底是什么玩意儿?啄木鸟社区上的Python资源索引2.1推荐资源站点Parnassus山的拱顶巨大的Python代码库,包罗万象。既可以从上面下载代码参考学习,同时也是与Python有关程序的大列表。Python号星际旅行船著名Python社区,代码、文档、高人这里都有。faqts.com的Python程序设计知识数据库Python程序设计知识库,都是与Python有关的程序设计问题及解决方法。啄木鸟Pythonic开源社区著名的(也可以说是最好的)国内Python开源社区。赖勇浩推荐的几个好玩又有难度的编程网站2.2其他参考资料ZDNET文章:学习Python语言必备的资源各种实用代码片段Python编程技巧笔记如何获得Python脚本所在目录的位置如何方便地给Python环境注册新类库Python几种并发实现方案的性能比较PythonicWeb应用平台对比现在个人对web.py(大致和KARRIGELL类似,都是类似于PHP那样比较简单的PythonWeb应用框架)和web2py非常感兴趣。近来Zope社区又出现了repoze.bfg这个解决方案,于是做应用时可以自由选用Zope中的合适部分了(Zope社区的另一个发展方向是Grok,目标是敏捷易用又强大)。另外还有Paste这样的wsgi参考实现来帮助做自己的框架。在wxPython下进行图像处理的经验(其实,仅使用wxPython也可以完成很多比较基础的图像处理工作,具体可以参照《wxPythoninAction》一书的第12节)序列化存储Python对象通过win32扩展接口使用Python获得系统进程列表的方法py2exe使用中遇到的问题idle的中文支持问题2.3代码示例的NewEdit编辑器的技术手册,讨论了一些关于插件接口实现、i18实现、wxPython使用有关的问题,值得参考。关于插件扩展机制:ASimplePluginFramework讲解了一种非常聪明而简单的办法来为代码提供插件接口。如果参考Java社区的类似框架,则有JavaPlug-inFramework(JPF)以及OSGi标准。另外limodou先生在Ulipad中实现插件和MixIn的机制也十分简单有效,见设计说明(一)--概述,当然在UliPad最新版本的代码中对这个机制的实现又有实用的改进。(发布插件则有不少项目采用PythonEggs)比较复杂的应用程序则可以使用ZopeComponentArchitecture这样的机制来实现灵活易用的扩展接口(注意:zca虽然是Zope平台的一个组成部分,但其自身是不需要依赖Zope平台即可使用的)。3.常用工具有Ant这个巨火的构建工具,Python的特性允许我们构建更新类型的构建工具,就是scons了。PythonSidebarforMozillaFireFox的一个插件,提供一个用来查看Python文档、函数库的侧边栏。IPython很好用的PythonShell。EasyInstall快速安装Python模块的易用性解决方案(使用这种方式发行的包通常以PythonEggs的格式被EasyInstall自动处理)。有人推荐先用virtualenv建个虚拟python环境再使用easy_install(之后就不用加--prefix参数了)。Mac下说setuptools版本过低的问题3.1PythonIDE我的IDE选择经验其实我现在只用Vim和Pydev了Pydev基于Eclipse的,非常棒的Python环境,改进速度非常快,现在是我最喜欢的IDE。ulipadPython+wxPython实现的轻量级全功能跨平台IDE,非常好用。做一些简单小东西的时候我会用这个。EricPythonIDE基于QT实现的非常不错的跨平台PYTHONIDE。支持调试,支持自动补全,甚至也支持重构。如果没有ulipad,并且在我的gnome下基于QT的Eric界面别走形的话,我会选这个。Spyder几乎是个轻量化的Eric,也是基于QT和QScintilla2实现。它是科学计算包python(x,y)(集成了科学计算常用的python第三方库,有400多M)的一个组成部分。的、同时支持Python和PHP的插件,曾经是我最喜欢的PythonIDE环境,功能相当全了,不过试用时感觉有些细节不完善以致不大好用。用Eclipse和Ant进行Python开发同时支持Win和Linux的源代码编辑器,似乎支持Python文件的编辑。著名的基于WxPython的GUI快速生成用的PythonIDE,但是开发进度实在太差了……成熟的Python代码编辑器,号称功能介于EMACS和IDLE之间的编辑器。:号称是一个FullFeatured编辑器,集成WxGlade支持GUI设计。eggy用Python和QT实现的PythonIDE,据说轻量又好用~(EditSection↓)3.2内置类库使用参考Python正则表达式操作指南为方便调试正则表达式,可以用KODOS(基于PyQT)、kiki(基于wxPython)、Pyreb(基于wxPython)中的任何一个来辅助。我目前用的是kiki,但最近它的官方网站登陆不上去,我从Debian包把它的源码扒出来,应用了stani做的wxPython2.8兼容性补丁,并且用py2app把它封装成Mac应用程序供QuickSilver调用。修改以后的源代码包下载。3.3常用第三方类库NumPyPython的数学运算库,有时候一些别的库也会调用里面的一些功能,比如数组什么的;PilPython下著名的图像处理库Pil;SimPy利用Python进行仿真、模拟的解决方案;Matplotlib据说是一个用来绘制二维图形的Python模块,它克隆了许多Matlab中的函数,用以帮助Python用户轻松获得高质量(达到出版水平)的二维图形;Graphviz与Matplotlib不同,这个东西能画:有向图、网络结构、有限状态机等等。本身不是Python实现的,但是能找到Python封装。Cryptopython的加解密扩展模块;PythonforCJK提供与python有关的CJK语言支持功能:转码、显示之类。Psyco、Pyrex:两个用于提高Python代码运行效率的解决方案;如果对性能还不满意,可以试试这样:用Python写自己的CModule。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没有。不过按照这篇文档来做,也是不难(我已试过,一切靠谱)。PyGtkQt永远的竞争者,在Win和Linux下表现都还不错,Mac下新的本地化移植绕过了系统自带的X11服务,性能大为提升,只是对输入法和字体支持等还有欠缺。先按照BuildingGTK-OSX安装GTK-OSX,然后按照Gtk+Python页的说明安装PyGtk即可,非常容易。Tornado非阻塞、高性能、可扩展的WebServer实现,源自FriendFeed。比MVC模式更方便易用的开发框架,主要是帮助透明地完成界面控件与后台数据之间的内容绑定。该框架支持GTK、QT、TK、wxWidgets等主要具有Python封装的GUI开发框架。pygame用Python帮助开发游戏的库,也可以用这个来播放视频或者音频什么的,大概依靠的是SDL;py2exewin下将Python程序编译为可执行程序的工具,是一个让程序脱离Python运行环境的办法,也可以生成Windows服务或者COM组件。其他能完成Python脚本到可执行文件这个工作的还有GordonMcMillan'sInstaller、Linux/Unix专用的freeze、Mac专用的py2app,另外setuptools可能也能帮上点。不过此类工具难免与一些模块有一些兼容性的问题,需要现用现测一下。总之这个主题可以参考HowtoDistributeCommercialPythonApplications。嵌入式数据库:BerkeleyDB的Python版,当然还有其他的好多。PEAK提供一些用于实现自动化集群测试的重要基础类库,比如超轻量线程框架、分布式代码执行等。greenlet是PEAK给出的一种进程内的线程模型实现,自称是Stackless项目的副产品。其实这是一种伪线程,也就是说greenlet间切换需要明确指定下一步切换到哪块指令继续执行,而没有被执行的代码就被暂时挂起了。这里面greenlet间的执行顺序是完全确定的,并且是非并发的,就不能解决长时间大量资源占用的操作会导致程序无响应的问题。但greenlet可以用来减少资源死锁、互斥造成的资源消耗(代码被阻塞时,可以切换先去执行其他未被阻塞的部分),因此用来响应按钮点击等是挺好用的。greenlet现在不再是pylib的组成部分了,而是一个独立的名为greenlet的pypi包,可以通过easy_install安装。Eventlet是基于greenlet完成的一个高并发网络库,提供“线程”池、