Python cx-freeze ImportError: dynamic module does not define init function

Python cx-freeze ImportError: dynamic module does not define init function

我有一个程序,它包含一个 .py 格式的主脚本和一些 .pyd 格式的自定义模块。所有文件都位于同一目录中。主脚本使用 import module 语法导入模块,从我的 IDE 来看,一切正常。但是当我 cx-freeze 程序时,我得到错误 dynamic module does not define init function.

更奇怪的是,quavers 模块是第二个导入,所以第一个可以工作,但随后这个就坏了。两者在内容上没有太大区别(每个只有几个功能)。我之前还使用自定义 pyd 模块创建了冻结程序,但之前从未遇到过这种情况。

什么是 init 函数,为什么 cx-freeze 需要它?它有什么作用?我需要在导入的每个模块中创建一个初始化函数吗?

我想通了。我有同一个模块的两个版本,quavers1quavers2。我首先使用 nuitka 将它们编译为 pyd,然后在 cx 冻结它们时将创建的 pyd 文件从 quavers1 重命名为 quavers。重命名 post nuitka 编译是导致问题的原因。如果我重命名,在 nuitka 中编译,然后冻结,它工作正常。