Я пытаюсь укутаться приложение Python с помощью py2exe 0.6.9 и Python 2.6.4 в Windows. В то время как исполняемый файл работает очень хорошо в системе, я раньше создавал его, это перестало работать, когда я пытаюсь выполнить его в другой системе:
C:\Documents and Settings\Administrator\Desktop\dist>.\backend.exe install
Traceback (most recent call last):
File "boot_service.py", line 6, in <module>
File "zipextimporter.pyo", line 82, in load_module
File "win32serviceutil.pyo", line 9, in <module>
File "zipextimporter.pyo", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading win32api.pyd
У меня есть сильная догадка, что я пропускаю библиотеку, но я не уверен, который — тем более, что средство проверки зависимости ничто не отмечает как отсутствующий в целевой системе. Как я должен продолжить двигаться?
Вы можете сделать проверку dll и зависимостей вручную. Когда вы генерируете exe, я уверен, вы заметили, что он печатает dll, которые требуются/используются. Проверьте на системе, где exe не работает, существуют ли эти dll и одинаковой ли они версии.
И еще одно. Вы копируете всю папку dist в систему или только exe, потому что вам нужна вся папка dist, а не только exe.
Выполняете ли вы преобразование py2exe на 64-битной / Vista?
Я писал свой код на vista64bit, и файлы .exe, которые я создаю, обычно не работают на 32-битной XP (это две машины, на которых я есть под рукой).
.exe услужливо выбрасывает текстовый файл с трассировкой, и оказывается, что 64-битные окна используют win32api.dll. Я предполагаю, что это .dll, используемый 64-битными окнами для репликации поведения 32-битной ОС, поэтому я просто беру тот же сценарий и выполняю преобразование на 32-битной XP. Надеюсь, это поможет.