2009-05-22 14 views
2

У меня есть стандартный скрипт установки для py2exe, с которым я связываю приложения на основе PyQt с файлами Windows .exe.Bundling PyQwt с py2exe

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

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

ответ

4

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

+0

Алекс, py2exe работает только отлично с PyQt для меня, только часть PyQwt вызывает проблемы. Почему вы предпочитаете PyInstaller? Мне кажется, что он менее поддерживается, менее обновляется и немного архаичен для использования. –

+1

Используется для (менее поддерживается и c), но это недавно было изменено - см. http://www.pycon.it/conference/talks/distribuire-programmi-python-con-pyinstaller и http://www.pycon.it/static/stuff/slides/distribuire-programmi-python-con -pyinstaller.pdf (не беспокойтесь о URL-адресе, он находится на английском языке ;-). После того как вы svn co http://svn.pyinstaller.org/trunk pyinstaller, выполните pyinstall er/doc/CHANGES.txt перечисляет множество изменений с 1.3. Я просто надеюсь, что они скоро выпустят! -) –

+0

Я работал с PyInstaller раньше, и на самом деле ему удалось правильно упаковать приложение PyQwt. Но я всегда был разочарован отсутствием поддержки. Необходимость загрузки из SVN не является признаком здорового проекта. Надеюсь, ты прав, и скоро это улучшит. –

1

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

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