使用IDLE或者Python Shell来编写Python是非常适合于简单程序的,但是这些工具往往将大型的编程项目变成一个个充满绝望和沮丧的"坑”。使用一款集成开发环境甚至是一款好的专用的代码编辑器会让编程充满乐趣,但是如何选择呢?
各位看官,不要畏惧,我们将在这里为您解释和揭开无数可供选择的神秘面纱。虽然我们无法决定哪一款最适合于你和你的项目,但是我们会阐明每一款的优缺点,帮助您作出最明智的决定。
为了浅显易懂,我们将我们的工具清单分为两部分,一部分是专门用于Python开发的专有工具,另一部分是我们可以用于Python开发的一般工具。我们将为每一款工具列出"为什么是它”和"为什么不是它”(优缺点)。最后要说的是,他们之间并不相互排斥,所以您可以在几乎无害的情况下自行尝试。
但是,首先...
什么是集成开发环境和代码编辑器?
集成开发环境(IDE,Integrated Development Environment)是专用于软件开发的程序。顾名思义,IDE集成了几款专门为软件开发而设计的工具。这些工具通常包括一个专门为了处理代码的编辑器(例如语法高亮和自动补全);构建、执行、调试工具和某种形式的源代码控制。
大部分的集成开发环境兼容多种编程语言并且包含更多功能,因此一般来说体积较大,需要时间去下载和安装并且为了正确使用需要更高深的知识。
相比之下,一款特制的代码编辑器可以像带有语法高亮和代码格式化功能的文本编辑器一样简单。大多数优秀的代码编辑器都可以执行代码和控制调试器,并且也可以和源码控制系统进行最好的交互。与集成开发环境相比,出色的专用代码编辑器往往体积更小更迅捷,但同时功能更少。
优秀Python编程环境的要求
因此在编程环境中什么是我们真正需要的呢?每个应用的功能各异,但是以下是使编程更容易的核心功能:
保存和重载代码文件
如果一款集成开发环境或者编辑器不允许你保存现有工作,并在之后重新打开时不能保持你离开时的相同状态,那么它就不是什么集成开发环境。
在环境内运行代码
类似的是,如果你必须退出编辑器来运行Python代码,那么它也就是一个普通的文本编辑器。
支持调试
在程序运行时支持逐步运行代码是所有集成开发环境和大多数优秀代码编辑器必备的核心功能。
语法高亮
支持对代码中的关键词、变量和符号快速标识可以让阅读和理解代码更为轻松。
自动补充代码格式
任何一个引人注目的编辑器或者集成开发环境都会在一个"while”或者"for”语句末端识别冒号,并且知道下一行应该缩进。
当然还有许多你或许关注的别的功能,例如源码控制、扩展模型、构建和测试工具、语言帮助等等。但是以上所列4点是我认为一个出色的编辑环境所必须具备的核心功能。
当我们考虑了这些功能后,让我们首先来关注一些可用于Python开发的通用工具。
支持Python的通用编辑器和集成开发环境
Eclipse + PyDev
类别:集成开发环境
如果你足够关注开源社区,那么你一定听说过Eclipse。Eclipse实际上是一款面向Java开发的兼容Linux, Windows和OS X的集成开发环境。它拥有丰富的插件和扩展功能市场,这使得Eclipse适用于各种各样的开发项目。
其中一个插件就是PyDev,它支持Python调试、代码补全和交互式Python控制台。在Eclipse中安装PyDev非常便捷,只需从Eclipse中选择"Help”点击"Eclipse Marketplace”然后搜索PyDev。点击安装,必要的时候重启Eclipse即可。
image
优点:如果你已经安装了Eclipse,安装PyDev是非常方便快捷的,对于资深Eclipse开发者来说,PyDev是几乎不需要另行学习的。
缺点:如果你只是一个Python初学者或者软件开发小白,掌握Eclipse还有很长的路要走。记得我说过集成开发环境往往体积较大并且需要更多的知识去正确使用,那么Eclipse正是如此并且就像一袋子小芯片一样需要你逐一了解。
Sublime Text
类别:代码编辑器
Sublime Text是一款非常流行的代码编辑器,其开发者是一名谷歌的工程师,其梦想是使之成为更好的文本编辑器。Sublime Text支持Python代码编辑同时兼容所有平台,并且丰富的插件(称之为"包”)扩展了语法和编辑功能。
安装额外的Python扩展可能会比较棘手,Sublime Text中所有的包都是用Python写成的,并且安装社区扩展往往需要直接在Sublime Text中执行Python脚本。
image
优点:Sublime Text在编程社区内很受推崇。单单从代码编辑器的角度来看,Sublime Text迅捷小巧并且具有良好的兼容性。
缺点:尽管你可以无限期的使用测试版本但是Sublime Text不是免费软件。在Sublime Text中安装扩展插件可能会比较棘手,另外并不支持直接在编辑器内部执行或调试代码。
为了充分利用Sublime Text设置,你可以阅读我们的Python+Sublime Text设置指南,或者观看我们更深层次的视频教学,这会帮助你在Sublime Text 3中建立一个高效的Python开发环境。
Atom
类别:代码编辑器
同样兼容所有平台的Atom被称为是"21世纪可破解的文本编辑器”。开源的Atom拥有时尚的界面、文件系统浏览器和扩展插件市场,它是使用Electron构建的,Electron使用JavaScript、HTML和CSS构建跨平台的桌面应用。Python语言由一款可在Atom运行时安装的扩展插件支持。
image
优点:得益于Electron,Atom广泛兼容各大平台。同样Atom小巧且下载和载入都非常迅速。
缺点:内置并不支持构建和调试,这些功能是由社区提供支持的。同样由于Atom建立在Electron框架上,所以它始终运行在JavaScript进程中而不是作为本地应用运行。
GNU Emacs
类别:代码编辑器
让我们回到iPhone和Android之战前,在Linux和Windows的战争之前甚至是在PC和Mac的战争前,有一场"编辑器之战”。而GNU Emacs就是战斗中的一员。伴随着狂热的追随,被称作"可扩展、可定制、自动记录、实时显示的编辑器”GNU Emacs几乎一直萦绕在UNIX周围。
终身免费且兼容任何平台(以某种形式),GNU Emacs使用强大的Lisp编程语言进行定制,并为Python开发提供各种定制脚本。
image
优点:了解了 Emacs,使用过 Emacs,你便会爱上 Emacs,Lisp作为第二语言,你清楚它给你的力量可以让你为所欲为。
缺点:定制化意味着向多种多样的脚本文件中编写(或复制粘贴)Lisp,如果没有他人提供,那么你必须去学习Lisp并且搞懂它是如何运行的。另外,Emacs是一款非常优秀的操作系统,如果它仅仅被当作一款优秀的文本编辑器....
请务必参考我们的Python + Emacs设置指南来进行设置。
VI/VIM
类别:代码编辑器
在文本编辑器战场另一侧是VI(又名VIM),默认安装在几乎每一个UNIX系统和Mac OS X系统中,VI有着同样的狂热追随。VI和VIM是一种模型编辑器,它将文本查看从文本编辑中分离。VIM在原始VI之上做了诸多改进,包括可扩展模型和就地代码构建。VIMScripts可用于各种Python开发任务。
image
优点:了解了VI,使用过 VI,你也会爱上 VI。VIMScripts并不会吓退你,并且你可以按你的意愿去做。
缺点:就像Emacs一样,你可能并不适应为了支持Python开发环境自行查找或者撰写脚本,此外你可能并不清楚模型编辑器是如何工作的。另外,VI是一款不错的文本编辑器当且仅当它拥有一个出色的操作系统。
如果您要使用这种组合,请参阅我们的Python + VIM安装指南,我们将为您提供提示和插件建议。
Visual Studio
类型:集成开发平台
Python工具:Python Tools for Visual Studio, 也称PTVS
与Eclipse进行多方面比较,由Microsoft建立的Visual Studio是一款全功能集成开发平台。VS仅兼容Windows和Mac OS系统,它既提供了免费版(社区版)也提供了付费版(专业版和企业版)。VS支持各种平台的开发,并且附带了自己的扩展插件市场。
Python Tools for Visual Studio (又名PTVS)实现了在VS中进行Python编程并且支持Python智能感知、调试和其他工具。
优点:就像Eclipse一样,如果你已经因为其他开发程序安装了VS那么添加PTVS时非常便捷的。
缺点:和Eclipse相同如果仅仅为了Python,那么VS是一个大型下载任务。另外如果你是Linux系统,那你并不走运,因为VS并不支持Linux平台。
Visual Studio Code
类别:代码编辑器
不要与完全版的VS混淆,Visual Studio Code(也称作VS Code)是一款兼容Linux,Mac OS X和Windows 平台的全功能代码编辑器。麻雀虽小但五脏俱全,VS Code开源、可扩展并且可以对几乎所有任务进行配置。就像Atom一样,VS Code建立在Electron基础之上,因此它具有相同的优点和缺点。
在VS Code中安装Python支持插件非常简单,它的市场是一个快速点击按钮。只需要搜索Python,点击安装然后必要的时候重新启动,VS Code就会自动识别你的Python安装和库。
image
优点:同样归功于Electron,VS Code支持所有开发平台,同样令人惊喜的是小巧的体格却蕴含了丰富的功能,同时它也是开源的。
缺点:Electron的使用意味着VS Code不是本地应用。另外,有些人可能从原则上并不使用Microsoft资源。
Python专用的编辑器和集成开发环境
PyCharm
类别:集成开发环境
PyCharm是最好的一个(也是唯一一个)专门面向于Python的全功能集成开发环境。同样拥有付费版(专业版)和免费开源版(社区版),PyCharm不论是在Windows, Mac OS X系统中, 还是在Linux系统中都支持快速安装和使用。
开箱即用,PyCharm直接支持Python开发环境,打开一个新的文件然后就可以开始编写代码。你也可以在PyCharm中直接运行和调试Python程序,并且它支持源码管理和项目。
image
优点:这是真正的Python集成开发环境,拥有众多便利和支持社区。它的编辑、运行和调试功能统统开箱即用。
缺点:PyCharm存在加载较慢的问题,另外对于已有的项目,默认设置可能需要调整。
Spyder
类别:集成开发环境
Spyder是一款为了数据科学工作流做了优化的开源Python集成开发环境。它是附在Anaconda软件包管理器发行版中的,因此根据你的设置,或许你已经在机器中安装了Spyder。
Spyder引人注目的一点是其目标受众是使用Python的数据科学家们。你一定会留意到这一点,举个例子来说,Spyder很好的集成了一些诸如SciPy、NumPy和Matplotlib这样的公共Python数据科学库。
Spyder拥有大部分你所期待的集成开发环境该具备的功能,例如具备强大语法高亮功能的代码编辑器,Python代码补全,甚至是集成文件浏览器。
我从未在其他Python编辑环境中见过的一个特殊功能是Spyder的"变量浏览器”功能,它会以表格形式出现在集成开发环境界面右侧来展示数据。就我个人来说,虽然我并不十分需要这个功能,但是它看起来的确很整洁。如果你是一位日常用Python做数据科学工作的人,那你一定会深深爱上这个独特的功能。Spyder关于IPython或者说Jupyter的集成也做得非常好。
总之,我认为Spyder比其他的集成开发环境更基本,我更愿意把它看做是一款专业工具而不是我日常使用的编辑环境。关于Spyder比较优秀的一点是它兼容Windows、macOS和 Linux系统并且是一个完全开源软件。
image
优点:当你是使用Anaconda Python发行版的数据科学家时你会爱上它。
缺点:更有经验的Python开发人员可能会觉得Spyder太基本了以至于不能支持每日所需的基本工作,这样的话还不如选择一个更为完整的集成开发环境或者定制编辑器解决方案。
Thonny
类别:集成开发环境
作为Python集成开发环境大家庭中的新成员,Thonny被称作是针对新手的一款集成开发环境。由爱沙尼亚塔尔图大学的计算机科学学院开发并维护的Thonny适用于全部主流平台,并且在网站上附有安装指南。
默认情况下,Thonny会和自带捆绑的Python版本一起安装,所以你不需要再安装什么新的东西。更有经验的老手可能需要调整这个设置以便找到和使用已安装的库。
image
优点:你是一名Python新人小白,并且一切就绪需要一款集成开发环境的时候你会选择它。
缺点:更有经验的Python老手可能会觉得Thonny同样太基础了,并且其内置解释器只是一个工作场合,而不是一个可以与之共事的工具。此外,作为一款新兴工具,你在遇到问题时很有可能发现没有现成的解决方法。
哪一个是为你量身定做的?
只有你自己可以决定中意哪一款,但是还是有一些基本建议:
Python开发新人应该尝试越少定制化越好的解决方案,越少阻碍,越好
如果你将文本编辑器用于其他用途(如网页或文件编辑)那么查找代码编辑器方案。
如果你已经在使用其他开发软件,你可能会发现将Python功能添加到现有工具集更容易。