Python FreshMan

★☆ Python新手的Blog ☆★
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Python IDE的选择 —— 以智能代码功能为标准

Posted on 2010-02-19 21:44  闫小勇  阅读(83806)  评论(12编辑  收藏  举报

 

大年初二开始学Python,首先得选一个开发环境。由于以前一直用Visual Studio,选IDE的时候首先得看是不是有智能代码(Call-Tips和 Auto-Complete)功能,如果没有的话,对于我这样的新手实在太痛苦了,我可不想去记那些库、包和函数名,最好一点 . 就能全出来。

 

看了《python IDE 介绍》这篇文章,把里边提到的IDE都下载了试用,最后选择了PythonWin Editor,原因是它的Call-Tips功能比较出众,只要import一个包,然后F5,它的所有函数、变量都可以Call-Tips出来,非常方便。不过PythonWin也有很大的问题,就是不能用来编写wxPython和PyQt的程序,一运行就崩溃。google一下,原因是它的MainLoop与wxPython和PyQt的相互冲突,所以用PythonWin编写GUI,只能用它自己提供的win32ui,有点像MFC的一个东西。

 

SPE和BOA看介绍说还不错,不过安装后在我机器上总出错,懒得配置它们。

 

原作者极力推荐的Eric4,试用了一下,发现Call-Tips功能还是比较弱的,必须得先把导入的包用它的工具API Generator生成API,而且只能对包里的类和函数Call-Tips,实例化对象后就不行了。例如import wx,wx.后可以出来变量,但b= wx.Button(……后,b.就什么都没有了。上Eric4的讨论区搜索,开发者也承认这是一个问题,所以还是放弃了Eric4。

 

eclipse+pydev要带一个JAVA运行时才能跑,在我机器上慢的很,我跑Python的机器内存只有256M,只能用穷人的工具了。

 

UliPad,一个国产的IDE,本来想支持它,后来发现它的Call-Tips和Auto-Complete功能实在有限,似乎只能对Python内置的包起作用,导入的外部包都不行,所以只好放弃它了。如果以后UliPad增强了这方面的功能,我还是会优先选择它。

 

WingIDE 的Call-Tips和Auto-Complete功能很强大,比PythonWin还好,不仅能购提示代码,还能在右侧的工具窗里显示doc,不过是商业版的,而且在我的老机上启动也比较慢。WingIDE的101版本是Free的,但恰好比专业版少了Call-Tips和 Auto-Complete功能。

 

Kodomo也是一个商业版软件,Auto-Complete功能没有WingIDE好,免费版的Kodomo Edit不能调试,也没有Auto-Complete,和WingIDE 101类似。

 

vim和emacs以前学linux时用过(遥想2002年上大四时,偶还考过TurboLinux的认证管理员,现在证书已经发黄,一直还是在用windows),一直没搞明白命令模式和编辑模式,看来我受MS毒害太深了,暂时不敢用,等以后没办法的时候再说吧。

 

另外,找了一个不太常见的IDE叫Spyder,它需要导入API才支持Call- Tips功能,和Eric4类似,而且API是和Eric4兼容的,用Eric提供的API Generator可以生成Spyder的API。但Spyder比Eric要轻量的多,安装文件只有1.67 M,调试等功能也不错。Spyder是python(x,y)的一部分,完整的python(x,y)有400多M,集成了科学计算常用的python第三方库,不过它的体积是在是太庞大了,而且我需要的numpy、matplotlib和networks库都单独安装了,其他的库暂时还用不到,所以没有下载。


此外,还下载了Leo、PyScripter等一堆不太出名的Python IDE,不过Call-Tips都不是太理想,水平尚在UliPad之下。

 

挑来挑去,最后还是选了PythonWin + Spyder。如果要开发GUI,就在PythonWin里编辑代码(为了用它的Call-Tips功能),在Spyder调试运行(PythonWin直接运行会崩溃),这两个软件都可以自动监测源文件变化,用他们打开同一个源代码文件来回切换就可以了,没发现什么冲突。如果不做带GUI的东西,就直接在PythonWin里编辑、运行就可以。

 

似乎很笨是吧?但我还没找到好的解决方案。除了商业版的WingIDE,真没有一个免费的Python IDE可以提供好的Call-Tips功能吗?