3

我正在使用 cx_Freeze 来冻结我的 python 程序。在运行 cx_Freeze 时,会创建一堆 PYD 文件,将一大堆 PYC 文件放入名为 library.zip 的存档中,还有一些 DLL 文件。

有人能告诉我 PYC 和 PYD 文件之间的区别吗?PYD 文件不在 library.zip 中的原因是什么?是否也可以将 PYD 文件放入存档中?

谢谢。

4

1 回答 1

6

免责声明:我有一段时间没有使用 cx_Freeze ......

.PYD 文件是包含特定 python 所需函数的 DLL 机器代码文件。

.PYC 文件是已编译成字节码的 .py 文件。

所以 PYD 是机器码,PYC 是字节码

现在至于为什么 PYD 不在 .zip 中……我想这是因为 python 解释器需要这些 .PYD 来运行程序。cx_Freeze 所做的基本上是这样的:

  1. 编译所有 .py 文件并将 .pyc 文件放入 zip 中
  2. 将所有需要的 .pyd 文件放在 zip 中
  3. 创建一个存根 .py 文件并将其放在输出目录中
  4. 复制 python.exe 并重命名为 myprogram.exe
  5. 复制打开 .zip 并运行内容所需的所有 .pyd 文件

所以你实际上并没有编译你的python文件,而是重命名interpeter并冻结所有源文件。

我希望这有帮助。

于 2010-05-20T16:45:46.673 回答