cx_freeze 如何编译 Python 脚本?

Posted

技术标签:

【中文标题】cx_freeze 如何编译 Python 脚本?【英文标题】:How does cx_freeze compile a Python script? 【发布时间】:2014-06-27 03:48:28 【问题描述】:

cx_freeze 是否包含其自己的编译器,该编译器来自 Python -> 二进制文件?还是翻译它(例如翻译成 C),并编译翻译后的代码?

编辑:它似乎被编译为字节码。那么这是否意味着 cx_freeze exe 只是 Python 解释器的字节码 -> 二进制部分?

【问题讨论】:

【参考方案1】:

cx_Freeze 并没有真正编译您的代码。它实际上只是将您的 Python 代码与 Python 解释器打包在一起,因此当您启动应用程序时,它会设置一个 Python 解释器并开始运行您的 Python 代码。它具有从 Python 源代码或字节码运行所需的机制,但它主要将模块存储为字节码,因为这样可以更快地加载。

像 Cython 和 Nuitka 这样的选项更进一步 - 它们将您的代码转换为 C 并将其编译为机器代码,但它们仍然使用 Python VM 机器。它只是调用 Python 功能的编译代码,而不是运行 Python 字节码的 VM。

【讨论】:

以上是关于cx_freeze 如何编译 Python 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

使用 cx_Freeze 执行的 Python 脚本,exe 啥也不做

带有 cx_freeze 的 python 3.2 tkinter 图标

如何减少 cx_Freeze 编译的 Python 可执行文件大小?

使用 cx_Freeze 冻结 Python 3.7 脚本时如何修复错误

cx_freeze 的 exe 错误

包括使用 cx_freeze 编译的扩展