cx_Freeze 和 PYC/PYD 文件
我正在使用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的工作原理基本上是这样的:
- 把所有的.py文件编译成字节码,并把.pyc文件放进一个zip包里。
- 把所有需要的.pyd文件也放进这个zip包里。
- 创建一个空的.py文件,并把它放到输出目录里。
- 复制python.exe,并把它重命名为myprogram.exe。
- 复制所有需要的.pyd文件,以便打开.zip并运行里面的内容。
所以你实际上并不是在编译你的Python文件,而是重命名了解释器,并把所有源文件“冻结”起来。
希望这能帮到你。