执行模型变体——冻结的二进制文件

未匹配的标注

有时当人们要求一个“真实的”Python 编译器时,他们真正寻找的只是从 Python 程序生成独立二进制可执行文件的一种方法。这更多是一个打包和发布的主意而不是一个执行流的概念,但有一些关联。在网上获取的第三方工具的帮助下,将 Python 程序转换为真正的可执行文件(在 Python 世界中被称作冻结的二进制文件)是可能的。这些程序不需要 Python 的安装也可以运行。

冻结的二进制文件将程序文件中的字节码,以及 PVM(解释器)和程序需要的任何 Python 支持文件打包为一个单独的包。关于这个主题有一些变体,但最终结果是一个单独的二进制可执行程序(比如,在 Windows 上的 .exe 文件),它能轻松发送给客户。在图 2-2 中,似乎最右边的两个气泡——字节码和 PVM——被合并为一个单独组件:一个冻结的二进制文件。

今天,许多系统可以产生冻结的二进制文件,它们的平台和功能都有所不同: Py2exe 只在 Windows 上,但有广泛的 Windows 支持;PyInstaller,类似于 py2exe 但也在 Linux 和 Mac OSX 上工作且能产生自安装的二进制文件;py2app 用来创建 Mac OS X 应用程序; 原来的工具,freeze;和 cx_freeze,它提供了 Python3.x 和跨平台支持。你可能不得不单独获取这些工具,而不能直接从 Python 本身的发行版中获得,但它们都是免费可得的。

这些工具也在持续进化,所以参考 Python 官网或你最爱的 web 搜索引擎来获取更多细节和状态。给你一个这些系统范围的概念:py2exe 能冻结使用 tkinter, PMW, wxPython 和 PyGTK GUI 库的独立程序;使用 pygame 游戏编程工具箱的程序;win32com 客户端程序;等等。

冻结的二进制文件和一个真正的编译器的输出不同——它们通过虚拟机运行字节码。因此,除了可能的启动改进,冻结的二进制文件和原始源文件运行得一样快。冻结的二进制文件通常不小(包含 PVM),但按目前的标准,它们通常也不大。然而,因为 Python 嵌入在冻结的二进制文件中,它在运行程序的接收端是不需要安装的。而且,因为代码嵌入在冻结的二进制文件中,会更有效地隐藏于接收文件的人。

这个单一文件打包方案对商业软件的开发者特别有吸引力。比如,一个用 Python 编码的基于 tkinter 工具箱的用户界面程序可以被冻结为一个可执行文件且作为 CD 或 Web 上的自包含程序被分发。终端用户不需要安装(或甚至不需要知道)Python 来运行分发的程序。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 查看所有版本


暂无话题~