2015-06-30 4 views
0

У меня есть программа, которая состоит из основного скрипта как .py и некоторых настраиваемых модулей как .pyd. Все файлы находятся в одном каталоге. Основной скрипт импортирует модули с использованием синтаксиса import module, и из моей IDE все работает отлично. Но когда я cx-замораживаю программу, я получаю ошибку dynamic module does not define init function.Python cx-freeze ImportError: динамический модуль не определяет функцию init

enter image description here

Что вдвойне странно, что quavers модуля является вторым импортом, поэтому первый один работает, но тогда это один ломается. И между ними нет большой разницы в содержании (всего несколько функций в каждом). Я также создал замороженные программы раньше с помощью настраиваемых модулей pyd и никогда не сталкивался с этим раньше.

Что такое функция init и почему это необходимо для cx-freeze? Что оно делает? Нужно ли мне создавать функцию init в каждом модуле, который я импортирую?

ответ

1

Я понял проблему. У меня есть две версии одного и того же модуля: quavers1 и quavers2. Сначала я скомпилировал их на pyd, используя nuitka, а затем переименовал созданный файл pyd с quavers1 в quavers, когда cx-замораживает их. Именно эта проблема вызвала переименование постнита. Если я переименую, скомпилируюсь в nuitka, то замерзнет, ​​он отлично работает.

Смежные вопросы