加载中…
正文 字体大小:

Python主流IDE对比:Eric VS. PyCharm

(2016-12-09 10:33:56)
标签:

杂谈

分类: 杂谈

IDE, 全称是Integrated Development Environment,翻译过来就是集成开发环境。Python的开发从2010年5月算起,不知不觉中,到现在已经是第七个年头。

这六年里,舍得最常用的IDE是Eric6(一开始是5.x版本),也试用过圈内闻名的PyCharm、WingIDE和Eclipse(+PyDev插件),算是有些心得。今天,着重对Eric6和PyCharm 2016.3作一下简单的评测。

颜值

Eric6是基于PyQt开发的,程序运行甚至只用一个BAT文件来调用,界面相对而言略丑。PyCharm基于Java开发,自带的主题很漂亮,风格比较统一。在颜值这一点上,无疑是PyCharm胜出。

顺带提一下WingIDE,虽然它也带了很多款主题,但整个窗口中有些部位是不受主题控制的。举个栗子,当你选择深色的主题时,窗口左下角往往会有一块白色的控件,忒刺眼。

速度和内存开销

从启动到打开一个项目,舍得掐着秒表测试了这几款IDE,数据如下:

  • 最慢的是PyCharm,平均需要18-20秒左右。就算把插件干掉只剩两个,再将Xms和Xmx参数适当调整,跑出最快的成绩是16秒5;
  • Eric平均只用11秒;
  • 最快的是WingIDE, 只用7秒;

内存开销上,PyCharm是大户,动辄就是吃掉你300-400MB的内存。机子内存小的童鞋要当心了!

UI和资源编译

开发过程中难免要对UI和资源文件进行调整,所以IDE中自然需要将这两项的编译工作集成进来。

Eric6是原生支持UI和资源文件编译的,它的开发者早就想到了我们需要这项功能。

PyCharm作为一个专业的Python IDE,在这方面无疑略显不足。要实现UI和资源编译,你必须手工在外部工具设置中添加它们(具体操作请自己去问度娘),虽然设置好之后和Eric6比也没啥区别,但总是开发者欠考虑。

不过PyCharm这个外部工具的设计还是值得赞赏的,你可以直接把打包命令(我通常用cx_freeze)直接整合进去,这样就方便多了。

调试

IDE中应当配备调试模块。舍得以前常在DOS命令行下运行开发中的程序,发现错误再切回IDE。现在想想实在是浪费了IDE自带的调试模块。

使用调试模块,首先带来的好处是你不必手工输入命令,也不必在DOS命令行和IDE间切来切去;其次,当遇到错误时,IDE的调试模块会直接显示出错误所在的位置,你不必再去手动寻找。当然调试模块的功能不止于此,具体如何,童鞋们可以自己去深入体会。

在调试方面,Eric6做得更好一些,在遇到错误时,它会自动跳到最终让你出错的位置,省时省力。PyCharm做法略嫌保守,它是在底部的“运行”窗口显示一系列出错的位置,每一个位置带有链接,点击链接即可跳到相应的行。舍得认为,不如在保留链接功能的前提下,自动跳到最后一行出错的位置,通常这一行是问题的关键。如果程序能够做得更智能一些则更好。

智能缩进

在Python的语法中,缩进是非常重要的一项。开发过程中,缩进若能更智能化一点,自然写代码的速度也会快一些。

在这方面,做得最优秀的是Eric6。它的牛x之处在于,无论你的光标键在哪个位置,只要你按TAB键,程序就会根据上面的代码选择合适的缩进位置。

PyCharm亦有类似的设计。它的智能缩进操作英文名叫Emacs Indent(建议将快捷键TAB设置给它),国内的汉化莫名其妙地翻译成了“宏选项卡”,这一定是外行人干的。

但Emacs Indent在处理整块缩进的时候略显无力,当我们要将整块代码往前移的时候,只能使用另一项叫作“取消缩进内容”的操作,而Eric6只要一个TAB键就足够了。

字体缩放

虽然我们可以在设置中给IDE的编辑器设一个特定的字号,但在实际开发中,还是免不了要适当缩放字体。尤其是大屏幕,字体适当放大一些,眼睛不至于那么遭罪。

字体的缩放这两款IDE都有。只不过,Eric6是早已设置好快捷键的(用Ctrl+=/-,或Ctrl+滚轮),而在PyCharm中,你必须手动设置这个快捷键。

这一轮,算打成平手好了。

自动补空格

PEP8的规范要求在逗号、运算符号之类的内容后面加一个空格,这一点Eric做得不错,在你输入一个逗号后,它会自动给你补一个空格,而PyCharm显然考虑得没有那么周到。你不得不手动一个个敲空格,或留着到最后使用Reformat File功能来纠正。

代码自动补全和代码规范化

两款IDE的代码自动补全做得都挺好。硬要挑出一个更好的来,我会把票投给PyCharm, 它的智能化程度似乎(我没法给出更精确的评价,建议自行体会)更高一些。

PyCharm除了自动补全,还会用类似拼写检查的方式检查你的代码,当你输入的代码不符合PEP8之类的规范时,PyCharm会适时提醒并对该部分代码作出标记。这个功能确实很贴心,我有理由相信用PyCharm会帮助我们将代码写得更加规范。

此外,PyCharm还会对当前方法下所用的变量进行检查,当有变量出现未使用、不一致、输入错误等情形时,PyCharm亦会将其一一标出,让你一目了然。

版本控制

版本控制也可算是IDE的标配了吧!Eric6和PyCharm都有版本控制的模块,不过舍得认为,PyCharm在这一块做得更细一些,和GibHub结合得很好,舍得用得很趁手。

数据库连接、查看

这项功能只能算是可选配置了。两款IDE都带有数据库内容浏览的功能,它的方便之处在于,我们要查看数据库中某项数据时,可以不必打开专用的数据库管理工具(比如SQLite的SQLite Expert, PostGreSQL的PG Admin,MySQL的PHPMyAdmin等),直接在IDE内查看。

Eric6自带一个内建的SQL浏览器,界面相对简陋,而且每次打开都必须重新设置,不够方便。

PyCharm是通过Database Tools and SQL这款插件来实现数据库连接和查看的功能,用来临时查看一下数据是足够了。

书签

在开发过程中,我们经常需要在一个文档中不同的位置间切换,此时书签功能会给我们带来很大的便利。

两款IDE都有书签功能,PyCharm做得更好一点,它的书签不会因为你退出程序而清除。而Eric6则会在你每次退出程序时,清空你的书签设置。

TODO

舍得在堆代码的时候,想到一些下一步要完善的功能之类的内容时,往往会在文档中插入一行,行首写上“# todo,”,然后把当时的想法写进去。这样日后就能根据todo的标记和内容来逐渐完善自己所开发的软件。

两款IDE都支持Todo功能,它们会把你在当前项目中的每一行标有todo的内容都搜集起来,以供你随时查看。只是在功能的完善性上,略有差距:

  • PyCharm在你输入“# todo,”的时候就将这一行进行高亮处理,让它变得非常醒目,Eric6默认是不会对“# todo,”作高亮处理的;
  • PyCharm的todo支持大小写,Eric6默认只支持大写,要想支持不同的格式,需要单独设置;

相比之下,PyCharm以微弱的优势胜出。

帮助文档

Eric6自带一个WebKit内核的帮助浏览器,当你设置好Python/PyQt/Pyside/Qt等帮助文档的路径后,可以在帮助菜单中直接点击这些文档的链接,Eric6就会调用帮助浏览器来显示这些文档。

PyCharm虽然有一个外部文档的设置和对应的菜单命令,但功能实在太弱比,应该好好完善一下才是。

另外PyCharm虽然提供了一个Search EveryWhere的“强大”功能,但由于搜索结果匹配往往不能尽如人意,使得此功能形如鸡肋。

结语

通过上面的比较和分析,相信大家自会得出自己的答案。简单说一下舍得的观点:

  • 如果你是个颜控,请选择PyCharm;
  • 如果你的电脑配置略低(尤其是内存),跑PyCharm感觉慢、卡,请选择Eric6;
  • 大多数功能,这两款IDE都大同小异。舍得最介意的是,PyCharm没法在逗号后居然不能自动补空格,希望开发者能在后续的版本中进一步完善;
  • 至于很多仍在使用非IDE(比如用vim、emacs、sublime text之类的编辑器)的童鞋,舍得的建议是,IDE可以让你的开发效率更高。看上去你用这些编辑器也能完成大部分工作,但别忘了,你费尽九牛二虎之力搞定各种插件的同时,IDE上这些功能早就已经非常成熟了,何必自己再去造轮子呢?

 

本文版权归舍得学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:舍得
首发:舍得新浪博客

0

阅读 评论 收藏 转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

       

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有