大多数极客认为 Python 是解释性语言,但它也存在编译过程。

编译部分在代码执行时完成,并被删除。然后编译内容被转换为字节码。通过机器和操作系统进一步扩展到 Python 虚拟机。

本文重点介绍了适用于 Python 程序员的 11 种最佳的 Python 编译器和解释器。

1、Brython

Brython 是一种流行的 Python 编译器,可将 Python 转换为 Javascript 代码。它提供对所有 Web 浏览器(包括一种手机 Web 浏览器)的支持。

它还支持最新的 Html5/CSS3 规范,可以使用流行的 CSS 框架,如 BootStrap3 和 LESS。

网址:https://brython.info

2、Pyjs

Pyjs 是一个丰富的 Internet 应用程序框架,也是一种轻量级的 Python 编译器,可以从 Web 浏览器直接执行 Python 脚本,可以从浏览器的 JS 控制台执行程序。

它是从 Python 到 Javascript 的编译器,可以使代码在 Web 浏览器上运行。它带有 Ajax 框架和 Widget Set API。

网站:http://pyjs.org

3、WinPython

它是为 Windows 操作系统设计的。它有一些 CPython 的特性。它预装了一些针对数据科学和机器学习的流行库,例如 Numpy、Pandas 和 Scipy。

它带有 C/C++ 编译器,大多数时候不会用到。除此之外,它只有 Python 编译器,没有其它包。

网址:https://winpython.github.io

4、Skulpt

Skulpt 是 Python 的浏览器版实现,可以被添加到 HTML 代码中。

此 Python 编译器使用 Javascript 编写,在客户端运行代码,无需其它插件、加工或服务器支持。

Skulpt 解释器通过导入方式,来执行保存在网站上的 .py 文件中的代码。

网站:https://skulpt.org

5、pyscript

PyScript 是一个框架,允许用户使用 HTML 接口在浏览器中创建丰富的 Python 应用程序。

PyScript 不需要除 Web 浏览器以外的任何开发环境,建议使用Chrome浏览器。如果您使用的是VSCode,则可以在编辑 HTML 文件时使用Live Server extension 重新加载页面。

网站:https://pyscript.net/

6、Shed Skin

该编译器将 Python 标准库模块编译为 C++,它将静态类型的 Python 程序转换为很受限的优化的 C++ 代码。

通过将其内置的 Python 数据类型再次实现为自己的类集(可以用 C++ 高效实现),可以提高性能。

网站:https://en.wikipedia.org/wiki/Shed_Skin

7、Active Python

这是用于 Windows、Linux 和 Mac Os 的 Python 发行版,有免费的社区版。

它支持在许多平台安装,某些不被 Python-like 的 AIX 支持的平台,它也支持。它提供了比 Python 更多的兼容性。

网站:https://www.activestate.com/products/activepython

8、Transcrypt

它是一种流行的将 Python 代码编译为简单易读的 Java 代码的编译器。它是一个轻量级的 Python 编译器,支持对矩阵和向量运算进行切片。

Transcrypt 也可以在 Node.js 上运行。分层模块、多重继承和本地类给其添加了很多功能。

网站:https://www.activestate.com/products/activepython

9、 Nutika

这是一种源码到源码的 Python 编译器,可以将 Python 源代码转换为 C/C++ 可执行代码。它会使用到许多 Python 库和扩展模块。

它自带 Anaconda,可用于创建数据科学和机器学习项目。

网站:https://www.activestate.com/products/activepython

10、 Jython

它用 Java 编写,可以在运行 JVM 的任何平台上执行。Jython 将 Python代码编译为 Java 字节码,从而做到跨平台。

它可用于创建 Servelets、Swing、SWT 和 AWT 软件包的解决方案。Jython 使用 CPython 之类的全局解释器锁(GIL) 。

另外,你可以将 Java 类扩展到 Python 代码。

网址:https://www.jython.org

11、CPython

CPython 是默认的且使用最广泛的 Python 编译器。它是用 C 语言编写的,并使用 GIL(全局解释器锁),这使得并发 CPython 进程之间的通信很困难。

CPython 中的编译步骤包括:解码、令牌化、解析、抽象语法树和编译。

网站:https://compilers.pydata.org

12、 IronPython

此版本的 Python 编译器是在微软的 .Net 框架和 Mono 上实现的。

它还提供了动态编译和交互式控制台。它使得安装非常容易,并且具有跨平台兼容性。

它还具有标准库和不同的模块,主要用于实现 .Net 框架的用户界面库。

网址:https://ironpython.net

13、Codon

Codon 是一种高性能的 Python 编译器,可将 Python 代码编译为本机机器代码,而无需任何运行时开销。 在单线程上,Python 的典型加速大约为 10-100 倍或更多。 Codon 的性能通常与 C/C++ 的性能相当。

Codon 已经在 GitHub 上开源:https://github.com/exaloop/codon

14、PyPy

PyPy 提升速度的秘诀是「即时编译( just-in-time compilation)」,即JIT 编译。提前编译 C、C ++、Swift、Haskell、Rust 等编程语言通常是提前编译(AOT 编译)的。这意味着用这些语言编写代码之后,编译器会将源代码转换成特定计算机架构可读的机器码。也就是说在执行程序时,执行的并不是原始源代码,而是机器码。

网址:https://www.pypy.org/

15、Cython

Cython是让Python脚本支持C语言扩展的编译器,Cython能够将Python+C混合编码的.pyx脚本转换为C代码,主要用于优化Python脚本性能或Python调用C函数库。

网址:https://cython.org/

16、Psyco

Psyco模块可以使你的Python程序运行的像C语言一样快。Psyco 是 Python 语言的一个扩展模块,可以即时对程序代码进行专业的算法优化,可以在一定程度上提高程序的执行速度,尤其是在程序中有大量循环操作时。最早被 Armin Rigo 开发,后来由 Christian Tismer 维护并继续完善。

网址:http://psyco.sourceforge.net/

17、jmpy3

jmpy3为python的一个第三方库,能够将python代码一键加密为.so或者.pyd文件,支持单个文件加密,整个项目加密,加密后会在项目目录中增加一个dist的文件夹,把源文件替换为加密后的文件即可正常运行

缺点

  1. 兼容性稍差,对于不同的版本的操作系统,需要重新编译
  2. 运行加密文件时的python版需要和加密时的python版本一致
  3. 没有官方文档,使用加密后的代码出错后,需要自己排查解决错误

18、Taichi

Taichi 起步于 MIT 的计算机科学与人工智能实验室(CSAIL),设计初衷是便利计算机图形学研究人员的日常工作,帮助他们快速实现适用于 GPU 的视觉计算和物理模拟算法。 Taichi 选择了一条创新的路径:嵌入于 Python,使用即时编译(JIT)架构(如 LLVM、SPIR-V),将 Python 源代码转化为 GPU 或 CPU 的原生指令,在开发时和运行时均提供优越性能。

官网:https://taichi-lang.cn/