Пакетирование PyQwt с py2exe - PullRequest
2 голосов
/ 22 мая 2009

У меня есть стандартный скрипт установки для 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 определенно присутствует.

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

Ответы [ 2 ]

4 голосов
/ 31 мая 2009

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

1 голос
/ 05 июня 2009

Некоторые опции:

  1. Попробуйте поиграть с py2xe bundle_files options (3, 2, 1) (особенно если вы поместите их все в один большой архив с библиотекой, некоторым dll это не понравится).
  2. Убедитесь, что копия msvcp71.dll существует в windows \ system32 или в каталоге вашего исполняемого файла.
  3. Попробуйте явно исключить dll (добавьте Qwt.pyd к опции dll_excludes и (после сборки) скопируйте Qwt.pyd (и _Qwt.pyd, если он существует) в путь к исполняемому файлу.
...