哪一种Python的集成开发环境(IDE)更适合你?以下对IDLE、Komodo、LiClipse、PyCharm、Visual Studio Code的Python扩展,Visual Studio的Python工具,以及Spyder这7种Python IDE在功能和易用性方面的组合进行分析和阐述。
在用来衡量编程语言的流行性和成功性的量标准中,一个主要指标是可以使用的开发环境的数量。Python近几年得到广泛应用,因此也掀起开发商对支持集成Python的IDE的开发热潮,而这些工具既面向组织的编程人员,又可以面向将Python用于科学工作和分析编程的工作人员。
获得Python支持的一些IDE涵盖了各种用例。有一些是专门为Python构建的,而另外一些则是通过附加组件支持Python或已使用Python特定的扩展进行改进的多语言IDE。尽管许多开发商都致力使其IDE成为一种通用解决方案,但这取决于Python开发人员不同的需求和标准。
如今,许多IDE都是为特定语言和任务配备附加组件的框架,而不是由内而外编写的促进特定编程语言开发的应用程序。为此,用户对IDE的选择可能取决于其是否有使用类似IDE的经验。
对于那些没有这方面经验的组织和人员来说,PyCharm是一个很好的起点。它对入门者很友好,并且功能不受影响。实际上,它具有所有IDE中最常用的功能,虽然其中许多功能只能在付费版本中可用,但免费版本的很多功能也可以为刚入门的开发人员提供帮助。
对于已经熟悉Eclipse和Microsoft Visual Studio的开发人员来说,LiClipse和用于Visual Studio的Python工具(PTVS)是很好的选择。这两者都是成熟的开发环境,可以很好地集成Python。然而,它们也是庞大而复杂的应用程序,因此也会耗费更多的资源。如果已经精通其中的一个,那么它将是开展Python工作的一个很好选择。
微软公司的Visual Studio 代码编辑器(包含微软公司的Python扩展程序)比Visual Studio轻巧得多。Visual Studio代码凭借其广泛的扩展而受到用户的欢迎,例如,项目的开发人员不仅可以使用Python,而且可以使用HTML和JavaScript来扩展项目的组合,以补充该项目的工作流程。
ActiveState公司的Komodo IDE的Python版本适合那些已经将Komodo IDE用于其他编程语言的人员,并且具有一些独特的功能(例如正则表达式计算器)可以扩大其吸引力。而Komodo值得入门者和行业专家的密切关注。
Spyder更适合在像Anaconda这样的发行版本中使用Jupyter记事本或其他科学计算工具,而不是作为Python的开发平台。而IDLE最好用于快速脚本编写,不过它也可能会落后于带有Python语法插件的独立代码编辑器。
1.IDLE
IDLE是大多数Python安装中包含的一种集成的开发和学习环境,可以视为默认的Python IDE。但是,IDLE绝不能替代技术成熟的IDE。它更像是一个精美的文件编辑器。尽管如此,IDLE仍然是开发人员了解Python语言的默认选项之一,并且伴随着每个Python版本(尤其是Python 3.5)的改进,IDLE也得到了逐步改进。
IDLE完全由Python的默认安装附带组件构建。除了CPython解释器本身之外,还包括Tkinter接口工具包。以这种方式构建IDLE的一个优点是能够以一组一致的行为跨平台运行。而其缺点是,其接口的运行速度可能非常慢。例如,从脚本向控制台中打印大量文本比直接从命令行运行脚本要慢得多。
IDLE有一些直接的便利和好处。它为Python提供了一个内置的REPL(读取、评估、打印、循环)平台或交互式控制台。实际上,这个交互式外壳程序是启动IDLE时呈现给用户的第一个内容,而不是一个空的编辑器。IDLE还包含在其他IDE中找到的一些工具,例如在按下Ctrl+Space键时为关键字或变量提供建议,以及集成调试器。但是与其他IDE相比,大多数实现的功能都是原始的,并且由于Tkinter用户界面(UI)组件选择比较有限。可用于IDLE的第三方附加组件(例如IdleX)的集合远不及其他IDE那么丰富。
IDLE没有项目的概念,因此没有关于如何使用Python虚拟环境的规定。唯一可识别的方法是创建一个虚拟环境,并从其上一代安装的Python中调用IDLE。使用其他工具(例如测试套件)只能人工完成。
总而言之,IDLE更适合两种情况:第一种情况是为了学习编写一个快速的Python脚本,并且需要预先配置的环境来完成这一点。第二情况是适合刚入门的初学者学习。
IDLE集成Python是免费的,但其功能集规模很小,因此更适合初学者。
2.Komodo IDE
Komodo IDE(现在已经更新到第12版)既可以用作独立的多语言IDE,又可以与ActiveState的语言平台集成。Python是Komodo支持的多种语言之一,也是ActiveState提供自定义运行时构建的多种语言之一。
在安装时,Komodo会通知用户在系统上发现哪些编程语言、程序包管理器和其他开发工具的有关信息。这是开箱即用的一种好方法。可以肯定的是,Komodo使用的是正确的Python版本,并正确安装的Git。
当组织为特定语言创建一个新项目时,Komodo会提供大量选项来预配置该项目。对于Python项目,可以从几种常见的Web框架之一中进行选择。而其示例项目包含许多受到支持的语言(包括Python)的示例和教程。文件中的导航非常顺畅,因为文件中有一个下拉式搜索小部件,可以查找所有方法和功能。其按键绑定是可配置的,可以通过模拟其他编辑器的下载软件包(例如Sublime Text)来添加。
让用户喜欢采用Komodo的原因是它包含了适用于各种语言的一些工具,例如正则表达式生成器。另一个强大的功能是位于顶部中心的“转到所有内容”栏,用户可以在其中键入内容在当前项目或Komodo界面中找到大多数内容,而当它出现时,总是会受到用户的欢迎。
对于代码检查工具,Komodo可以与PyChecke、Pylint、pep8或Pyflakes集成,尽管对它们的支持是单独连线的,而不是通过集成代码检查工具的通用机制获得的。
Komodo 12最突出的一些新功能可以与ActiveState平台的集成。开发团队可以在配置和构建语言的自定义运行时,获得他们需要的所有软件包。这是为了确保开发人员不必自己为项目设置运行时间和依赖项;他们可以在预装所有内容的情况下简单地获取相同的自定义运行时间。
Komodo也有一些缺点,其一个最大的问题是对使用Python虚拟环境的支持有限。必须人工创建venv,然后将项目的Python运行时与这个venv相关联。面切换给定项目的venv需要深入到该项目的设置。
Komodo 12的本地Git集成远没有其他IDE那么强大。尽管用户可以使用附加组件扩展Komodo的功能,但Komodo所需的附加组件没有Visual Studio Code的附加组件那样多。而且,其中许多附加组件在Komodo 12中仍无法使用。
Python版本的Komodo IDE不仅对Python提供强大的支持,而且还融合了对其他编程语言的支持。
3.LiClipse/PyDev
Eclipse基金会开发的Java驱动的Eclipse编辑器通过附加组件支持多种语言。对Python的支持来自名为PyDev的加载项,用户可以通过两种方式使用它:也就将其人工添加到现有的Eclipse安装中,或者使用PyDev下载名为LiClipse的Eclipse预打包版本。
除了对Python的支持之外,LiClipse还包括通过Eclipse的EGit插件进行的Git集成,对Python的Django Web框架的支持,甚至支持Jython(Jython是在JVM上运行的Python变体)。
LiClipse充分利用了Eclipse UI中的常规功能。可以重新映射所有密钥,并且LiClipse附带了一组用于Emacs仿真的密钥绑定库。通过“透视图”系统,用户可以根据当前的任务(开发、调试或使用项目的Git存储库)在多个面板视图之间进行切换。
LiClipse软件包中包含的插件提供一些更好的功能。重构历史可以使用户在进行正式重构时跟踪整个代码库中的更改,这在理论上可以通过Git来完成,但是采用专用工具更加方便。另一个很好的功能是能够在引发一个或多个异常(包括用户已定义的异常)时自动触发断点。
虽然LiClipse不会自动检测到项目中是否存在venv,但用户始终可以人工配置和添加venv,并且LiClipse与Pipenv集成以创建和管理它们(假设基本Python安装中存在Pipenv)。LiClipse有一个很好的GUI浏览器,可以查看在哪些Python venv中安装了哪些软件包,并且用户也可以从这个GUI运行pip。
LiClipse/PyDev也有一些缺点,例如很难进行诸如从requirements.txt文件安装新软件包之类的事情,并且在激活环境的情况下创建Shell会话也很困难。
LiClipse内置了自己的代码分析工具,也可以使用Mypy和Pylint。但是,与Komodo一样,这些选择都是硬连接到应用程序的。没有一种简单的方法可以将列表中没有的其他工具整合在一起。同样,一个直接集成到LiClipse中的测试框架是单元测试,可以通过为项目创建一种特殊的运行配置来进行。
LiClipse将PyDev插件打包在轻量级的Eclipse中,但是PyDev也可以添加到现有的Eclipse安装程序中。
4.PyCharm
JetBrains为各种语言开发了一系列IDE,所有这些IDE都基于相同的核心源代码。 PyCharm是他们的Python IDE,其构建旨在支持Python开发人员的独特工作模式和实践。
从用户首次创建PyCharm项目的那一刻起,对工作流程的关注就已经显而易见。用户可以从自己选择的解释器中选择一个虚拟环境,其中包含一个示例main.py文件。采用便捷的图形用户界面(GUI)使用户可以使用pip将模块安装到虚拟环境中,并且其IDE甚至可以自动检测requirements.txt文件,提供自动安装缺少的依赖项的功能。
用户可能会发现在IDE中同样要关注工作细节。例如,如果使用Alt+Shift+F10按键组合在项目中运行文件,PyCharm会记住这一运行配置以供将来使用。这对于可能具有多个入口点的项目来说很方便。当用户在PyCharm中打开一个加载项目的命令行实例时,PyCharm会自动激活该项目的虚拟环境。对于使用低功耗笔记本电脑的用户,PyCharm的“省电模式”会禁用背景代码分析,以防止电池耗尽。
重构项目也有专用的PyCharm工具。这不只是重命名函数或方法;用户可以更改所讨论代码的大多数方面(例如更改函数签名),并预览这一过程中将会受到影响的内容。PyCharm提供了自己的代码检查工具,但是第三方插件使得使用Pylint成为可能。
Python项目受益于强大的测试套件,但是由于涉及到样板,开发人员在创建它们时通常会拖延。PyCharm的自动测试生成功能使用户可以为现有代码生成框架测试套件,然后根据需要进行测试。如果已经进行测试,则可以配置运行概要文件得以执行,并支持所有流行的测试框架(pytest、unittest、nose等)。此外还有其他自动快捷方式。
PyCharm可以通过数千个插件进行扩展和调整,这些插件可以通过PyCharm的用户界面(UI)直接安装。这包括对Python(CSV和Markdown)、第三方工具(Docker)使用的公共数据或文本格式的支持,以及对其他语言(R和Rust)的支持。
PyCharm的社区版本涵盖大多数用例,但专业版添加了一些在企业设置中有用的关键功能,例如开箱即用的Cython支持、代码覆盖率分析工具和配置文件。
PyCharm的丰富功能集,即使是免费版本,也使其成为大多数Python开发方案的有力选择。
5. Visual Studio Code的Python扩展
微软Visual Studio Code的爆炸式增长和广泛普及推动了附加组件的开发,这些附加组件几乎支持每种编程语言和数据格式。Visual Studio Code最著名的Python插件也是由微软公司开发的,编辑器和附加组件共同构成了Python开发的最佳解决方案之一。
在安装后,微软的Python扩展程序还将安装对Jupyter记事本,该记事本可在编辑器中直接打开和使用。Python扩展还提供了Pylance,这是一种语言服务器,可以通过Pyright工具提供整理和类型检查。这些组件一起提供了涵盖绝大多数开发方案的解决方案。
Visual Studio Code的Python扩展的一个主要缺点是,缺少用于创建新Python项目并配置其所有元素的常规设置过程(例如向导)。因此必须人工执行每个步骤:创建虚拟环境、配置路径等。它还缺乏与Pipenv等Python项目管理工具的全面集成。对于给定的项目,完全可以通过命令行进行人工设置,这是因为没有在Visual Studio CodeCode的Python扩展中使用它们的工具。尽管存在对某些单独框架的支持(例如对Django模板的调试支持),但仍必须人工配置这些框架。
从好的一方面来说,Visual Studio Code自动检测项目目录中的虚拟环境,并在用户在编辑器中打开终端窗口时更多地使用它们。这样省去了人工激活环境的麻烦。Visual Studio Code还可以检测使用Poetry(Python项目管理工具)创建的虚拟环境。
Visual Studio Code的另一个强大功能是命令调色板,用户只需键入一个或两个单词就可以找到几乎任何命令或设置。在搜索单词前加上“Py”或“Python”作为前缀,将获得更加集中的搜索结果。而且,Python扩展本身支持各种各样的静态代码分析工具和代码格式化工具。
Visual Studio Code通过Python扩展很好地支持的一件事是发现和执行单元测试。 Python的原生单元测试和第三方pytest均受支持。运行调色板中的“Python:发现测试”命令将逐步完成测试的发现,并在底部的状态栏上设置测试运行器按钮。各个测试项目甚至都具有嵌入式注释,可让用户重新运行或调试它们。这是Python扩展可以完成许多事情的模型。
Python扩展集中于Python使用最广泛的部分,而将更深奥的部分留给第三方开发。例如并不支持Python的Cython超集,该超集可让用户将Python编译为C语言。第三方扩展提供了Cython语法突出显示功能,但并没有集成Cython工作流。
Visual Studio Code的Python扩展的最大优点是,它可以从Visual Studio Code可用的扩展的灵活性中受益。例如,可以自由地重新映射按键绑定,并且可以使用更多的主题来使Visual Studio Code的字体或调色板更容易接受。
Visual Studio Code的开放式架构允许支持多种语言,其中Python是主要语言之一。
6.适用于Visual Studio 2019的Python工具
如果用户已经以某种形式使用了Visual Studio,并且正在添加Python,那么采用适用于Visual Studio的Python工具插件是很有意义的。微软的开源插件提供了对许多常见Python框架的预打包功能,并且使Visual Studio界面提供了Python调试和部署功能,其方式与其他的语言相同。
Visual Studio现在为Python提供了强大的支持,无论用户要构建哪种项目,都需要采用考虑支持该语言的IDE。
有两种方法可以在Visual Studio上使用Python进行设置:一是用户可以将Python工具添加到Visual Studio的现有安装中,二是从头开始安装Visual Studio并自动添加Python工具。而两条方法都是殊途同归的,Visual Studio安装带有许多常见Python应用程序类型的模板。
开箱即用的Visual Studio的Python 工具可以创建使用一些广泛使用的Python Web框架的项目:例如Flask、flaskwithjade(一种模板语言)、Django和Bottle微型框架。还提供通用Web服务的模板、简单的命令行应用程序、使用Python的Windows IoT核心应用程序,以及从现有Python代码创建Visual Studio项目的选项。
Python运行时也可以自动安装(Python 3.7.8和Python 2.7.18)。用户甚至可以为需要使用Python的项目安装Miniconda。还可以使用cookiecutter项目模板系统提供Scikit学习项目的模板。
当用户使用这些框架创建新项目时,Visual Studio会检查并确保用户已经具有依赖项。如果没有,它将为用户提供一些选择。用户可以创建一个Python虚拟环境,并在其中放置所需的软件包。用户可以在系统范围内将软件包安装到Python解释器中,或者可以人工将依赖项添加到项目中。
一个很好的做法是Visual Studio记录了设置项目时所采取的所有步骤,因此用户知道已进行了哪些更改以及哪些内容都位于何处。Visual Studio还可以智能地检测到requirements.txt文件的存在,并可以为用户的项目创建一个虚拟环境,并预先安装这些需求。如果要移植一个包含虚拟环境的现有项目,它们也会被自动检测并包含在内。
Visual Studio的解决方案资源管理器不仅包含与每个Python项目相关的文件,而且还包含随附的Python环境以及其中安装的任何Python包。用户在界面中右键单击环境,可以交互地安装软件包和自动生成需求文件,或将文件夹、Zip存档或文件添加到项目的搜索路径。Visual Studio会自动为已经安装的环境生成IntelliSense索引,因此编辑器的即时建议是基于用户正在使用的Python环境中安装的内容,而不仅仅是当前文件或项目。
当用户启动用于测试的网络应用程序时,通过工具栏中的绿色箭头启动图标,Visual Studio的应用程序启动器会弹出并打开默认的网络浏览器(或用户选择的浏览器),并将其指向应用程序的地址和端口。生成菜单具有发布选项,可以将用户的应用程序部署到包括Microsoft的Azure应用程序服务在内的各种云服务上。
选用于Visual Studio的Python工具提供了一个内置工具,用于运行Pylint和Mypy代码分析器。与依赖外部程序包的其他Visual Studio功能一样,如果用户尚未设置这些程序包,则Visual Studio会尝试安装其中一个程序包。用户还可以在虚拟环境中进行设置。
很多用户对没有支持Cython的项目感到失望,其项目允许将Python模块编译为C扩展、DLL和独立的可执行文件。 Cython使用Visual Studio作为其编译器之一,但是Visual Studio的Python工具中不支持Cython格式的文件,也不直接支持在Visual Studio中编译Cython模块。
Microsoft在Visual Studio中提供了对Python作为开发语言的支持,其中包括对Web框架的支持。
7.Spyder
大多数Python的IDE都是通用的,这意味着它们适用于任何类型的Python开发环境,也适用于与Python一起使用其他语言进行开发。Spyder专注于提供用于科学工作的IDE,而不是提供Web开发或命令行应用程序。这种专注使Spyder不如其他的IDE灵活,特别是因为它不具有即时的第三方扩展范围(例如Visual Studio Code具有的插件),但是在一些特定领域,它仍然非常强大。
Spyder本身是用Python编写的。这可能是它面临最大的问题,也可能是它最好的特性,这取决于用户将如何构建。虽然它使Spyder可供Python开发人员使用,但它也使Spyder很难作为独立应用程序使用。它主要用于Anaconda Python发行版(或可移植的WinPython发行版),Anaconda提供了Spyder所缺乏的许多项目管理功能。
用户可以使用安装程序安装Spyder单机版,但主要缺点是缺少每个项目的配置。这意味着在启动项目时,没有简单的方法可以将Spyder配置为使用任何给定项目的虚拟环境;只能将Spyder作为一个整体配置使用一个特定的venv。
另一种方法是创建一个venv并在其中安装Spyder,然后从该venv中启动Spyder。但是,这需要安装总计超过400MB的数十个软件包,因此对于需要它的多个项目来说可能不太现实。而Spyder的另一个缺点是:无论采用哪种安装方法,Spyder的启动时间都比其他IDE长得多。
Spyder的特性令人关注,它使Python的科学计算工具可以在单个界面中立即使用。用户界面(UI)的左侧是通常的项目文件树/编辑器选项卡集。但右侧有两个选项卡式窗格,专门显示可视化和交互式工具。IPython和Jupyter记事本在它们自己的窗格中运行,同时运行生成的图形绘图(也可以内联显示,也可以只在绘图选项卡中显示)。
变量浏览器允许用户交互式地编辑IPython会话中所有用户创建的变量。而内置的分析器窗格可以让用户查看有关程序的哪些部分花费最多时间运行的统计信息。
Spyder中的按键绑定都是可配置的,包括用于除编辑器以外的其他窗格的按键绑定(例如绘图视图)。但是在这里,按键绑定只能在整个编辑器范围内进行配置。对于单元测试,用户将需要安装一个单独的模块spyder-unittest,该模块可与Python自己的unittest以及pytest和nose框架一起使用。
Spyder专注于数学和科学,因此它出现在Anaconda中,但它也可以用于其他类型的开发工作。