Python 是一门对初学者友好的编程语言,是一种多用途的、解释性的和面向对象的高级语言。它拥有非常小的程序集,非常易于学习、阅读和维护。其解释器可在 Windows、Linux 和 Mac OS 等多种操作系统上使用。它的可移植性和可伸缩性等特性使得它更加容易被运用。
Python 库可用于以下用途:
- Web 开发
- 数据科学
- 机器学习
- 多媒体
- 软件开发
- 像 Django 这样的 Web 框架
- GUI 应用
大多数极客认为 Python 是解释性语言,但它也存在编译过程。编译部分在代码执行时完成,并被删除。然后编译内容被转换为字节码。通过机器和操作系统进一步扩展到 Python 虚拟机。
不同的 Python 实现(编译器或解释器)针对不同的目标平台、性能需求或集成场景进行了优化。本文重点介绍了适用于 Python 程序员的 11 种主要的 Python 编译器和解释器,并分析其适用场景。
最好的 Python 编译器和解释器
1. Brython
Brython (Browser Python) 是一种流行的 Python 编译器,可将 Python 代码直接转换为 Javascript 代码。它提供对所有 Web 浏览器(包括手机 Web 浏览器)的支持,无需后端服务器处理 Python 逻辑。
它还支持最新的 Html5/CSS3 规范,可以使用流行的 CSS 框架,如 Bootstrap3 和 LESS。这使得开发者可以在前端直接使用 Python 语法编写交互逻辑,而无需配置复杂的构建环境。
适用场景:需要在浏览器中运行 Python 脚本且不想依赖后端服务的场景。
2. Pyjs
Pyjs 是一个丰富的 Internet 应用程序框架,也是一种轻量级的 Python 编译器,可以从 Web 浏览器直接执行 Python 脚本,可以从浏览器的 JS 控制台执行程序。
它是从 Python 到 Javascript 的编译器,可以使代码在 Web 浏览器上运行。它带有 Ajax 框架和 Widget Set API,允许开发者使用 Python 构建富互联网应用(RIA)。Pyjs 将 Python 代码编译为 JavaScript,从而利用浏览器的原生能力。
适用场景:构建基于浏览器的 Python Web 应用,需要类似桌面应用的交互体验。
3. WinPython
WinPython 是为 Windows 操作系统设计的便携式 Python 发行版。它包含 CPython 的核心特性,但无需安装即可运行。
它预装了一些针对数据科学和机器学习的流行库,例如 Numpy、Pandas 和 Scipy。这对于需要在没有管理员权限的 Windows 机器上进行数据分析的用户非常有用。它带有 C/C++ 编译器,大多数时候不会用到。除此之外,它只有 Python 编译器,没有其它包,保持了环境的纯净。
适用场景:Windows 用户进行数据科学实验,特别是无法安装系统级软件的环境。
4. Skulpt
Skulpt 是 Python 的浏览器版实现,可以被添加到 HTML 代码中。此 Python 编译器使用 Javascript 编写,在客户端运行代码,无需其它插件、加工或服务器支持。
Skulpt 解释器通过导入方式,来执行保存在网站上的 .py 文件中的代码。这意味着你可以直接在网页中嵌入 Python 代码块,并在页面上看到结果,非常适合教学演示或简单的交互式工具。
适用场景:在线编程教育、无需服务器的简单 Python 脚本演示。
5. Shed Skin
Shed Skin 是一个将 Python 标准库模块编译为 C++ 的编译器。它将静态类型的 Python 程序转换为很受限的优化的 C++ 代码。
通过将其内置的 Python 数据类型再次实现为自己的类集(可以用 C++ 高效实现),可以提高性能。Shed Skin 要求代码遵循特定的静态类型子集,这限制了其通用性,但在追求高性能的场景下非常有价值。
适用场景:需要将 Python 逻辑部署为高性能本地二进制文件的场景,且代码符合静态类型约束。
6. ActivePython
ActivePython 是用于 Windows、Linux 和 Mac Os 的 Python 发行版,有免费的社区版。这是由 ActiveState 公司维护的商业化版本。
它支持在许多平台安装,某些不被 Python-like 的 AIX 支持的平台,它也支持。它提供了比 Python 更多的兼容性,并包含了经过测试的第三方库集合。ActivePython 通常用于企业环境,以确保稳定性和长期支持。
适用场景:企业级部署,需要跨平台一致性和官方技术支持的环境。
7. Transcrypt
Transcrypt 是一种流行的将 Python 代码编译为简单易读的 Javascript 代码的编译器。它是一个轻量级的 Python 编译器,支持对矩阵和向量运算进行切片。
Transcrypt 也可以在 Node.js 上运行。分层模块、多重继承和本地类给其添加了很多功能。相比其他编译器,Transcrypt 生成的 JS 代码可读性较高,便于调试和维护。
适用场景:全栈 Python 开发,希望前后端共享逻辑代码的项目。
8. Nutika
Nutika 是一种源码到源码的 Python 编译器,可以将 Python 源代码转换为 C/C++ 可执行代码。它会使用到许多 Python 库和扩展模块。
它自带 Anaconda,可用于创建数据科学和机器学习项目。Nutika 旨在提高 Python 的执行效率,通过底层编译减少解释器的开销。
适用场景:对执行效率有较高要求的 Python 数据处理任务。
9. Jython
Jython 用 Java 编写,可以在运行 JVM 的任何平台上执行。Jython 将 Python 代码编译为 Java 字节码,从而做到跨平台。
它可用于创建 Servlets、Swing、SWT 和 AWT 软件包的解决方案。Jython 使用 CPython 之类的全局解释器锁(GIL)。另外,你可以将 Java 类扩展到 Python 代码,实现 Java 生态与 Python 生态的无缝对接。
适用场景:Java 技术栈环境中需要引入 Python 脚本或扩展功能的场景。
10. CPython
CPython 是默认的且使用最广泛的 Python 编译器。它是用 C 语言编写的,并使用 GIL(全局解释器锁),这使得并发 CPython 进程之间的通信很困难。
CPython 中的编译步骤包括:解码、令牌化、解析、抽象语法树和编译。它是 Python 的标准参考实现,绝大多数第三方库都是首先针对 CPython 开发的。
适用场景:绝大多数通用 Python 开发任务,拥有最丰富的生态系统支持。
11. IronPython
IronPython 版本的 Python 编译器是在微软的 .Net 框架和 Mono 上实现的。
它还提供了动态编译和交互式控制台。它使得安装非常容易,并且具有跨平台兼容性。它还具有标准库和不同的模块,主要用于实现 .Net 框架的用户界面库。这使得 Python 能够深度集成到 Windows 桌面应用或 ASP.NET 后端中。
适用场景:.NET 开发环境,需要调用 .NET 库或使用 WPF/WinForms 的 Python 应用。
总结与选择建议
Python 是一种为许多实现提供了可能的开发语言,例如 Python 到 Java,Python 到 Javascript 或其它。这些编译器有助于我们理解它是多么的全能。
在选择 Python 实现时,应考虑以下因素:
- 目标平台:如果是 Web 前端,考虑 Brython 或 Transcrypt;如果是移动端或嵌入式,可能需要 Shed Skin 或 Nutika。
- 生态系统:如果需要大量第三方库,CPython 是首选。
- 性能需求:如果计算密集型,考虑 Shed Skin 或 Nutika 等编译型方案。
- 集成需求:如果需与 Java 或 .NET 集成,分别选择 Jython 或 IronPython。
对于初学者,建议从 CPython 开始,因为它文档最全、社区支持最好。随着项目深入特定领域,再根据需求评估其他实现。