2009-11-29 5 views
2

Я создаю приложение среднего уровня в Python. Теперь все работает хорошо, и я пытаюсь сделать это исполняемым файлом с помощью py2exe. Исполняемый файл создается нормально, но когда я пытаюсь его запустить, он не работает со следующей ошибкой.Python py2exe - ошибка загрузки памяти

File "zipextimporter.pyo", line 82, in load_module 
    File "ffhandler.pyo", line 33, in ? 
    File "zipextimporter.pyo", line 82, in load_module 
    File "pyAA\__init__.pyo", line 1, in ? 
    File "zipextimporter.pyo", line 82, in load_module 
    File "pyAA\AA.pyo", line 8, in ? 
    File "zipextimporter.pyo", line 82, in load_module 
    File "pyAA\pyAAc.pyo", line 5, in ? 
    File "zipextimporter.pyo", line 98, in load_module 
ImportError: MemoryLoadLibrary failed loading pyAA\_pyAAc.pyd 

Я использую pyAA в этом приложении. Я искал интернет, но не смог получить какое-либо решение. Я скопировал msvcp71.dll в windows/system32, но все еще проблема есть.

Я решил это раньше (около 7 месяцев назад), но мой жесткий диск разбился, и когда я пытаюсь его воссоздать, я не могу сейчас его решить. :-(

Я был бы очень благодарен, если кто-то может помочь мне здесь

EDIT:. Когда я использую py2exe без опции пучка файлов, он работает отлично, но когда я использую расслоение вариант файла, он.

Я пробовал без опции zipfile, в котором он создает library.zip вместе с исполняемым файлом. Снова это не удалось. Я разархивировал library.zip с помощью 7-zip и обнаружил, что _pyAAc.pyd есть в pyAA папка внутри zip-файла. Таким образом, это выглядит как некоторая проблема с функцией memoryloadlibrary.

Когда я чтобы распаковать его с помощью функции распаковки окон, она не удалась. Мне пришлось использовать 7-zip, чтобы разархивировать его. Это возможный ключ?

ответ

0

Вы пропускаете некоторые DLL файлы в вашей сборке ...

Первый поиск на жестком диске для файла _pyAAC.pyd. Убедитесь, что он включен (отправлен) в вашей сборке.

Затем используйте 'dependency walker' в файле .pyd (в вашей скомпилированной версии py2exe!), Чтобы увидеть, что он все еще отсутствует (другие DLL-файлы, вызывающие сообщение для файла .pyd). Убедитесь, что эти зависимости также отправлены, ...

+0

Thank you ChristopheD. Я проверил его, но обнаружил, что он действительно отправлен. Я внес некоторые изменения в мой вопрос, пожалуйста, смотрите то же самое. – Koran

+0

Я видел это раньше в прошлом (некоторые dll не любят поставляться с набором опций bundle_files. Не знаю, как это сделать. Путь может заключаться в том, чтобы строить с помощью bundle_files. Или вы могли бы посмотрите на альтернативы: http://stackoverflow.com/questions/1689086/are-there-any-alternatives-to-py2exe (например, pyinstaller) – ChristopheD