cx_Freeze 和 PYC/PYD 文件

2 投票
1 回答
4102 浏览
提问于 2025-04-15 22:56

我正在使用cx_Freeze来打包我的Python程序。当我运行cx_Freeze时,会生成一堆PYD文件,还有很多PYC文件被放进一个叫做library.zip的压缩包里,另外还有一些DLL文件。

有人能告诉我PYC文件和PYD文件有什么区别吗?为什么PYD文件不在library.zip里面?能不能把PYD文件也放进这个压缩包里呢?

谢谢。

1 个回答

6

免责声明:我已经有一段时间没用过cx_Freeze了……

.PYD文件是包含特定Python所需功能的DLL机器代码文件。

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

所以PYD是机器代码,而PYC是字节码。

至于为什么PYD文件不在.zip里……我猜是因为这些.PYD文件是Python解释器运行程序所必需的。cx_Freeze的工作原理基本上是这样的:

  1. 把所有的.py文件编译成字节码,并把.pyc文件放进一个zip包里。
  2. 把所有需要的.pyd文件也放进这个zip包里。
  3. 创建一个空的.py文件,并把它放到输出目录里。
  4. 复制python.exe,并把它重命名为myprogram.exe。
  5. 复制所有需要的.pyd文件,以便打开.zip并运行里面的内容。

所以你实际上并不是在编译你的Python文件,而是重命名了解释器,并把所有源文件“冻结”起来。

希望这能帮到你。

撰写回答