Die Bündelung PyQwt mit py2exe
Frage
Ich habe eine Standard-Setup-Skript für py2exe mit dem ich PyQt-basierten Anwendungen in Windows-EXE-Dateien bündeln.
Heute habe ich versucht, ein einfaches Skript, das die PyQwt Modul verwendet, und es scheint nicht zu funktionieren. py2exe läuft in Ordnung, aber wenn ich die .exe erstellt es ausführen, es Dumps folgendes in eine Protokolldatei und läuft nicht:
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
Als ich in PyQt4\Qwt5\
im build\bdist.win32\winexe\collect-2.5
Verzeichnis suchen, Qwt.pyd
ist definitiv da.
Ich kann nicht scheinen, etwas Sinnvolles Online in Bezug auf diesen Fehler zu finden. Was könnte es dazu führen? Danke.
Lösung
py2exe ist nicht der einzige Weg, und vielleicht nicht der beste Weg, um gemeinsam exe-Dateien für Python-Anwendungen - insbesondere, es kaum, wenn überhaupt unterstützt pyqt. Bitte, ich flehe Sie Besuche PyInstaller , die über PyQt weiß (und Linux und Mac, sollte Sie kümmern ...) - so stellen Sie sicher, dass Sie die SVN Kopf der Kasse, nicht die „freigegeben“ Version, die zu diesem Zeitpunkt ernsthaft veraltet ist (ein Problem, das hoffentlich weg geht bald ...)
Andere Tipps
Einige Optionen:
- Versuchen Sie, mit dem py2xe
bundle_files options
spielen (3, 2, 1) (vor allem, wenn man sie alle in einer großen Bibliothek zip setzen, einige DLLs nicht gefällt das). - Stellen Sie sicher, dass eine Kopie von
msvcp71.dll
unter Windows existiert \ system32 oder in dem Verzeichnis Ihrer ausführbare Datei. - Versuchen Sie, die DLL ohne explizit (add Qwt.pyd zur
dll_excludes
Option und (nach dem Bau) kopiert Qwt.pyd (und _Qwt.pyd falls vorhanden) auf Ihren ausführbaren Pfad.