Вопрос

У меня есть стандартный сценарий установки для py2exe, с помощью которого я объединяю приложения на основе PyQt в файлы Windows .exe.

Сегодня я попробовал простой скрипт, который использует модуль PyQwt, и, похоже, он не работает.py2exe работает нормально, но когда я запускаю созданный им .exe, он сбрасывает следующее в файл журнала и не запускается:

Traceback (most recent call last):
  File "qwt_test.pyw", line 5, in <module>
  File "zipextimporter.pyo", line 82, in load_module
  File "PyQt4\Qwt5\__init__.pyo", line 32, in <module>
  File "zipextimporter.pyo", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading PyQt4\Qwt5\Qwt.pyd

Когда я заглядываю в PyQt4\Qwt5\ в build\bdist.win32\winexe\collect-2.5 каталог, Qwt.pyd определенно есть.

Кажется, я не могу найти ничего полезного в Интернете относительно этой ошибки.Что могло бы стать причиной этого?Спасибо.

Это было полезно?

Решение

py2exe - не единственный и, возможно, не лучший способ объединить exe-файлы для приложений Python - в частности, он вряд ли, если вообще поддерживает pyqt.Пожалуйста, я умоляю вас, проверьте PyInstaller, который знает о PyQt (и Linux, и Mac, если вас это волнует ...) - просто убедитесь, что вы используете SVN head checkout, а не "выпущенную" версию, которая на данный момент серьезно устарела (проблема, которая, надеюсь, скоро исчезнет ...).

Другие советы

Некоторые варианты:

  1. Попробуйте поиграть с py2xe bundle_files options (3, 2, 1) (особенно если вы помещаете их все в одну большую библиотеку zip, некоторым dll это не нравится).
  2. Убедитесь, что копия msvcp71.dll существует в Windows\ system32 или в каталоге вашего исполняемого файла.
  3. Попробуйте явно исключить dll (добавьте Qwt.pyd в dll_excludes выберите и (после сборки) скопируйте Qwt.pyd (и _Qwt.pyd, если он существует) в ваш исполняемый путь.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top