介绍Python程序员常用的IDE和其它开发工具
jopen
13年前
<h1 id="A.2BaYKP8A-">概述</h1> <p class="line874">“工欲善其事,必先利其器”,如果说编程是程序员的手艺,那么IDE就是程序员的吃饭家伙了。 </p> <p class="line874">IDE 的全称是Integration Development Environment(集成开发环境),一般以代码编辑器为核心,包括一系列周边组件和附属功能。一个优秀的IDE,最重要的就是在普通文本编辑之外,提供针对特定语言的各种快捷编辑功能,让程序员尽可能快捷、舒适、清晰的浏览、输入、修改代码。对于一个现代的IDE来说,语法着色、错误提示、代码折叠、代码完成、代码块定位、重构,与调试器、版本控制系统(VCS)的集成等等都是重要的功能。以插件、扩展系统为代表的可定制框架,是现代IDE的另一个流行趋势。 </p> <p class="line874">IDE并非功能越多越好,因为更多的功能往往意味着更大的复杂度,这不但会分散程序员本来的精力,而且还可能带来更多的错误。只要基本功能满足需要,符合自己使用习惯的IDE才是最好的IDE。程序员的逻辑永远是:用最合适的工具做最合适的事情。 </p> <p class="line874">正因为此,比起大而全的IDE,以单纯的文本编辑器结合独立的调试器、交互式命令行等外部小工具也是另一种开发方式。由于python本身的简洁,因此在写小的代码片段以及通过示例代码学习时这种方式尤其适合。 </p> <p class="line867"></p> <h2 id="A.2BXjh1KA-IDE.2Be4BOyw-">常用IDE简介</h2> <p class="line874">这里简单介绍Python程序员中最流行的若干IDE。 </p> <p class="line867"></p> <h3 id="A.2BUYV.2Fbg-IDE">内置IDE</h3> <p class="line874">Python的各个常见发行版都有内置的IDE,虽然它们的功能一般不够强大完整,但简便易得就是最大的优势。 对于初学者来说,它们也是上手的最好选择,可以让你更专注于语言本身而不会被繁复的IDE分散精力。 </p> <p class="line867"></p> <h4 id="IDLE">IDLE</h4> <p class="line874">IDLE是Python标准发行版内置的一个简单小巧的IDE,包括了交互式命令行、编辑器、调试器等基本组件,足以应付大多数简单应用。 IDLE是用纯Python基于Tkinter编写的的,最初的作者正是Python之父Guido van Rossum本人。 </p> <p class="line867"><a class="http" href="/misc/goto?guid=4959499729581857773">http://hkn.eecs.berkeley.edu/~dyoo/python/idle_intro/index.html</a> -- 《One Day of IDLE Toying》,图文并茂的入门文章 </p> <p class="line867"><a class="http" href="/misc/goto?guid=4959499729692506638">http://hkn.eecs.berkeley.edu/~dyoo/python/idle_intro/IDLE-chinese.htm</a> -- 《One Day of IDLE Toying》中文版 </p> <p class="line867"></p> <h4 id="PythonWin">PythonWin</h4> <p class="line867"><a class="nonexistent" href="/misc/goto?guid=4959499729800612169">PythonWin</a>是Python Win32 Extensions(半官方性质的python for win32增强包)的一部分,也包含在<a class="nonexistent" href="/misc/goto?guid=4959499729905316889">ActivePython</a>的windows发行版中。如其名字所言,只针对win32平台。 </p> <p class="line862">总体来说,<a class="nonexistent" href="/misc/goto?guid=4959499729800612169">PythonWin</a>是一个增强版的IDLE,尤其是易用性方面(就像windows本身的风格一样)。除了易用性和稳定性之外,(简单的)代码完成和更强的调试器都是相对于IDLE的明显优势。 </p> <p class="line862">Python Win32 Extensions的下载页:<a class="http" href="/misc/goto?guid=4958342951524830188">http://sourceforge.net/projects/pywin32/</a> </p> <p class="line867"><a class="nonexistent" href="/misc/goto?guid=4959499729905316889">ActivePython</a>的主页:<a class="http" href="/misc/goto?guid=4959499730079991415">http://www.activestate.com/Products/ActivePython/</a> </p> <p class="line867"></p> <h4 id="MacPython_IDE">MacPython IDE</h4> <p class="line867"><a class="nonexistent" href="/misc/goto?guid=4959499730188498360">MacPythonIDE</a>是Python的Mac OS发行版内置的IDE,可以看作是<a class="nonexistent" href="/misc/goto?guid=4959499729800612169">PythonWin</a>的Mac对应版本,由Guido的哥哥Just van Rossum编写。 </p> <p class="line867"></p> <h3 id="Emacs.2BVIw-Vim">Emacs和Vim</h3> <p class="line862">Emacs和Vim号称是这个星球上最强大(以及第二强大)的文本编辑器,对于许多程序员来说是万能IDE的不二(三?)选择。 比起同类的通用文本编辑器如<a class="nonexistent" href="/misc/goto?guid=4959499730306636083">UltraEdit</a>,Emacs和Vim由于扩展功能的强大,可以针对性地搭建出更为完整便利的IDE。 </p> <ul> <li> <p class="line891"><a href="/misc/goto?guid=4959499730419182254">Emacs</a> -- Emacs及python-mode的简介 </p> </li> <li> <p class="line891"><a href="/misc/goto?guid=4959499730528313701">Emacs23</a> -- Emacs最新版本,完全支持unicode,目前为开发中分支 </p> </li> <li> <p class="line891"><a href="/misc/goto?guid=4959499730642714615">Vim</a> -- Vim 通用编辑环境使用技巧推介 </p> </li> <li> <p class="line891"><a href="/misc/goto?guid=4959499730754551593">PyIDEguider</a>、<a href="/misc/goto?guid=4959499730864068372">VimPython</a>、<a href="/misc/goto?guid=4959499730971289345">VimPythonTDD</a> -- 社区内几篇介绍在Vim环境下进行Python开发的文章 </p> </li> </ul> <p class="line874">虽然二者掌握之后可以说是终身受益,但学习曲线都比较陡峭。 由于历史原因,它们的设计理念都是基于纯ascii字符环境,GUI相对来说不是支持的重点,大量使用快捷键才能带来最大的便利。 对于初学者来说,相对而言Vim更简洁一些,但Emacs的GUI与一般编辑器的习惯更接近些。 </p> <p class="line867"></p> <h3 id="Eclipse_.2B-_PyDev">Eclipse + PyDev</h3> <p class="line874">Eclipse是新一代的优秀泛用型IDE,虽然是基于Java技术开发的,但出色的架构使其具有不逊于Emacs和Vim的可扩展性,现在已经成为了许多程序员最爱的瑞士军刀。 </p> <ul> <li> <p class="line891"><a href="/misc/goto?guid=4959499731080721760">Eclipse</a> -- Eclipse集成开发环境使用说明,简略介绍了Eclipse插件开发的基础知识 </p> </li> </ul> <p class="line867"><tt class="backtick">PyDev</tt>是Eclipse上的Python开发插件中最成熟完善的一个,而且还在持续的活跃开发中。除了Eclipse平台提供的基本功能之外,<tt class="backtick">PyDev</tt>的代码完成、语法查错、调试器、重构等功能都相当出色,可以说在开源产品中是最为强大的一个,许多贴心的小功能也很符合编辑习惯,用起来相当顺手。 </p> <p class="line874">速度和资源占用是致命伤,在低配置机器上跑起来比较吃力。 </p> <ul> <li> <p class="line891"><a href="/misc/goto?guid=4959499731179226201">PyDev</a> -- PyDev开发环境简介 </p> </li> </ul> <p class="line862">Eclipse的主页:<a class="http" href="/misc/goto?guid=4958197609720738474">http://www.eclipse.org/</a> </p> <p class="line867"><tt class="backtick">PyDev</tt>的主页:<a class="http" href="/misc/goto?guid=4959499731386711059">http://pydev.sourceforge.net/</a> </p> <p class="line867"><tt class="backtick">PyDev</tt>使用手册:<a class="http" href="/misc/goto?guid=4959499731493161174">http://www.fabioz.com/pydev/manual_101_root.html</a> (Eng) 此入门手册从安装到开发过程中的使用,并且是图文显示,推荐大家使用. </p> <p class="line862">技术开发参考: 用 Eclipse,<tt class="backtick">PyDev</tt> 和 Ant 进行 Python 开发,<a class="http" href="/misc/goto?guid=4959499731658533805">http://www-128.ibm.com/developerworks/cn/opensource/os-ecant/index.html</a> </p> <p class="line867"></p> <h3 id="UliPad">UliPad</h3> <p class="line867"><a href="/misc/goto?guid=4959499731765953904">UliPad</a>是国内知名pythoner,也是PythonCN社区核心成员limodou开发的IDE。 </p> <p class="line867"></p> <h3 id="SPE_.28Stani.27s_Python_Editor.29">SPE (Stani's Python Editor)</h3> <p class="line874">很有特色的一个轻量级python IDE,功能很全面而不失小巧轻便,特别适合写小的脚本。 </p> <p class="line874">即时生成代码的UML类图是独此一家的功能,此外还特别注重与外部工具的集成。例如,集成了wxGlade作为所见即所得的GUI开发环境,集成了Winpdb作为调试器,甚至还能与3D建模工具Blender集成。 </p> <p class="line874">SPE没有管理Project的概念,这样开发多文件多目录组成的项目时会不太方便。此外界面设计相对来说不够细致,也算是瑕疵。 </p> <p class="line862">SPE的主页:<a class="http" href="/misc/goto?guid=4959499731873167618">http://stani.be/python/spe/</a> </p> <p class="line867"></p> <h3 id="Boa_Constructor">Boa Constructor</h3> <p class="line874">专为快速开发基于wxPython的GUI程序而设计的IDE,支持“所见即所得”的控件拖放式开发,被称为Python世界中的Delphi。 </p> <p class="line874">曾被sourceforge推选为"Project of the Month",不过最近开发速度趋于缓慢。 </p> <p class="line862">Boa Constructor的主页:<a class="http" href="/misc/goto?guid=4959499731978409892">http://boa-constructor.sourceforge.net/</a> </p> <p class="line867"></p> <h3 id="Eric3">Eric3</h3> <p class="line862">Eric3的主页:<a class="http" href="/misc/goto?guid=4959499732127908719">http://www.die-offenbachs.de/detlev/eric3.html</a> </p> <p class="line867"></p> <h3 id="WingIDE">WingIDE</h3> <p class="line874">Wingware公司开发的商业产品,总体来说是目前最为强大专业的Python IDE,开源项目可以申请到免费的license。 </p> <p class="line862">最大的缺点和PyDev一样,速度较慢,资源占用多。 </p> <p class="line862">Wingware的主页:<a class="http" href="/misc/goto?guid=4958191151865125498">http://wingware.com/</a> </p> <p class="line867"></p> <h3 id="Komodo">Komodo</h3> <ul> <li style="list-style-type:none;"> <p class="line862">另一个优秀的商业产品,由ActiveState公司开发,是一个泛用的脚本语言IDE,除了Python外还支持javascript、perl、php、ruby、tcl等多种语言。 </p> <p class="line862">Komodo的主页:<a class="http" href="/misc/goto?guid=4959499732274977138">http://www.activestate.com/Products/Komodo/</a> </p> </li> </ul> <p class="line867"></p> <h3 id="Textmate">Textmate</h3> <p class="line867"><a class="nonexistent" href="/misc/goto?guid=4959499732381623053">Textmate</a>是Mac OSX平台的Cocoa原生程序,类似<a class="nonexistent" href="/misc/goto?guid=4959499730306636083">UltraEdit</a>。以灵活的Bundles和Code Snippets著称,支持大多数的脚本语言。Rails的全体开发团队都用这个Editor。类似Emacs/vi,需要配合ctags分析 python代码结构,可以很容易的做unittest等功能。需要特别指出的是它对于Django的model和template、以及Zope都有专门的支持。 </p> <p class="line862">Textmate的主页:<a class="http" href="/misc/goto?guid=4958195092208043403">http://macromates.com/</a> </p> <p class="line867"></p> <h4 id="Scribes">Scribes</h4> <ul> <li> <p class="line891"><a class="http" href="/misc/goto?guid=4959499732536135850">“书记员”──穷人的TextMate?</a> </p> </li> </ul> <p class="line867"></p> <h4 id="Intype">Intype</h4> <ul> <li> <p class="line891"><a class="http" href="/misc/goto?guid=4959499732693051427">Windows下的Textmate</a> </p> </li> </ul> <p class="line867"></p> <h3 id="PyScripter">PyScripter</h3> <p class="line874">Delphi开发的Python IDE,只有windows版本。 </p> <p class="line867"><a class="nonexistent" href="/misc/goto?guid=4959499732794569460">PyScripter</a>的主页:<a class="http" href="/misc/goto?guid=4959499733022399957">http://mmm-experts.com/Products.aspx?ProductId=4</a> </p> <p class="line867"></p> <h2 id="IDE.2BTktZFnaEXeVRdw-">IDE之外的工具</h2> <p class="line867"></p> <h3 id="A.2BTqROkl8PVH1O5IhM.28interactive_console.29">交互式命令行(interactive console)</h3> <p class="line867"></p> <h4 id="IPython">IPython</h4> <p class="line862">IPython的主页:<a class="http" href="/misc/goto?guid=4959499733127163895">http://ipython.scipy.org/</a> </p> <p class="line867"></p> <h3 id="A.2BjAOL1V3lUXc.28Debugger.29">调试工具(Debugger)</h3> <p class="line867"></p> <h4 id="Winpdb">Winpdb</h4> <p class="line862">Winpdb的主页:<a class="http" href="/misc/goto?guid=4959499733297388286">http://www.digitalpeers.com/pythondebugger/</a> </p> <p class="line867"></p> <h3 id="A.2BUXZbg2UvYwE_Python_.2BdoR.2FFo.2BRVmg-">其它支持 Python 的编辑器</h3> <p class="line867"></p> <h4 id="Leo">Leo</h4> <p class="line862">基于全新的<a href="/misc/goto?guid=4959499733407395692">Literate Programming</a>(文学化编程)理念的开发工具,详细的介绍参见:<a href="/misc/goto?guid=4959499733516989893">LeoEnvironment</a> </p> <p class="line862">Leo的主页:<a class="http" href="/misc/goto?guid=4958335703062937556">http://webpages.charter.net/edreamleo/front.html</a> </p> <p class="line867"></p> <h4 id="Bluefish">Bluefish</h4> <p class="line874">Bluefish 通常被认为是一个类似 Homesite 的网页编辑器,但事实上它不仅如此。它应该是一个通用的文本编辑器,支持 C、PHP、Python、Ruby、Perl、Java、Shell、Tcl 等许多种编程语言,支持语法高亮、自动换行、自动关闭 HTML 标签等,可同时编辑多个文档。 </p> <p class="line862">Bluefish 当然不能算是一款 Python 的 IDE 工具,但如果做 Web 相关的开发( <a href="/misc/goto?guid=4959499733740370093">DjanGo</a>、<a href="/misc/goto?guid=4959499733857037311">TurboGears</a> 等),用它来写程序显然很方便。而且 Bluefish 相当友好,基本上不用学就会用,可以使我等菜鸟尽快将精力转移到 Python 的学习上来。 </p> <p class="line862">Bluefish 官方站在 <a class="http" href="/misc/goto?guid=4958201329512265449">http://bluefish.openoffice.nl/index.html</a> 目前可以运行在大多数类 UNIX 操作系统上。 </p> <p class="line867"></p> <h1 id="Discuss">Discuss</h1> <p class="line867"></p> <h2 id="A.2BfvxUCGvUj4M-">综合比较</h2> <p class="line867"><a href="/misc/goto?guid=4959499733999168750">swordsp</a>的个人建议: </p> <ul> <li> <p class="line862">初学者首选IDLE / PythonWin / MacPython </p> </li> <li> <p class="line862">Emacs / Vim / Eclipse+PyDev是强大且通用的解决方案,取决于你更熟悉哪个环境,如果都没有基础,更推荐Eclipse+PyDev。 </p> </li> <li>SPE是纯Python实现的简洁型IDE中功能最完善的,写小脚本的时候很方便。 </li> <li> <p class="line862">Boa长处在基于<a href="/misc/goto?guid=4959499734111976074">wxPython</a>的快速GUI开发。 </p> </li> <li>如果有条件选择商业工具,WingIDE或者Komodo都是优秀的产品。 </li> </ul> <p class="line874">其它比较Python IDE的文章: </p> <p class="line867"><a class="http" href="/misc/goto?guid=4959499734218012633">http://www-128.ibm.com/developerworks/cn/linux/sdk/python/charm-14/index.html</a> </p> <p class="line874">"Charming Python"专栏作者David Mertz的测评文章,写于2001年,许多内容已经过于陈旧了,但仍有参考价值。 </p> <p class="line867"><a class="http" href="/misc/goto?guid=4959499734328964275">http://spyced.blogspot.com/2005/09/review-of-6-python-ides.html</a> -- <a class="attachment" title="" href="http://wiki.woodpecker.org.cn/moin/PyIDE?action=AttachFile&do=view&target=review-of-6-python-ides.html">review-of-6-python-ides.html</a> </p> <p class="line867"><a class="http" href="/misc/goto?guid=4959499734526715282">http://spyced.blogspot.com/2006/02/pycon-python-ide-review.html</a> -- <a class="attachment" title="" href="http://wiki.woodpecker.org.cn/moin/PyIDE?action=AttachFile&do=view&target=pycon-python-ide-review.html">pycon-python-ide-review.html</a> </p> 较新的两篇Python IDE测评文章(原地址需代理才能访问,后一个附件链接是本地的备份),分别比较了PyDev、Eric3、Boa Constructor、BlackAdder、Komodo、WingIDE、SPE。 <br /> <br /> 转自: <a href="/misc/goto?guid=4959499734748713360" target="_blank">http://wiki.woodpecker.org.cn/moin/PyIDE</a>