【问题标题】:cx_Freeze and PYC/PYD filescx_Freeze 和 PYC/PYD 文件
【发布时间】:2010-05-20 15:55:17
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: python cx-freeze


    【解决方案1】:

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

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

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

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

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

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

    因此,您实际上并没有编译您的 python 文件,而是重命名解释器并冻结所有源文件。

    我希望这会有所帮助。

    【讨论】:

    • 谢谢蒂姆。 ..所有这一切,而我一直在想我一直在将它“编译”成一个exe文件。 :p
    • 你可以看看 pypy. Pypy 实际上可以将你的 python 代码编译成 C,但是设置/使用/理解并不容易。 codespeak.net/pypy/dist/pypy/doc
    猜你喜欢
    • 1970-01-01
    • 2012-02-07
    • 2012-08-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    相关资源
    最近更新 更多