Python cx-freeze ImportError:动态模块没有定义init函数

时间:2015-06-30 05:59:33

标签: python python-3.x cx-freeze

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

enter image description here

更奇怪的是,quavers模块是第二个导入,因此第一个模块可以工作,但是这个模块会中断。两者在内容方面没有太大差异(每个内容只有几个功能)。我之前也使用自定义pyd模块创建了冻结程序,之前从未遇到过。

什么是init函数以及为什么cx-freeze需要它?它有什么作用?我是否需要在导入的每个模块中创建一个init函数?

1 个答案:

答案 0 :(得分:1)

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