Bundling PyQwt con py2exe
Domanda
Ho uno script di installazione standard per py2exe con cui raggrupparli in fasci applicazioni PyQt-based in file di Windows exe.
Oggi ho provato un semplice script che utilizza il modulo PyQwt, e non sembra funzionare. py2exe corre bene, ma quando eseguo il .exe crea, fa uscire il seguente in un file di log e non viene eseguito:
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
Quando mi guardo PyQt4\Qwt5\
nella directory build\bdist.win32\winexe\collect-2.5
, Qwt.pyd
è sicuramente lì.
Non riesco a trovare qualcosa di utile in linea per quanto riguarda questo errore. Che cosa potrebbe causare? Grazie.
Soluzione
py2exe non è l'unico modo, e forse non il modo migliore, per mettere insieme i file exe per le applicazioni Python - in particolare, difficilmente se non del tutto supporta PyQt. Per favore, ti supplico, controllare PyInstaller , che fa sapere di PyQt (e Linux, e Mac, dovrebbe vi preoccupate ...) - solo assicurarsi di utilizzare la cassa testa SVN, non la versione "rilasciato", che in questo momento è seriamente fuori di data (un problema che sta andando via si spera presto ...)
Altri suggerimenti
Alcune opzioni:
- Prova a giocare con il
bundle_files options
py2xe (3, 2, 1) (soprattutto se li metti tutti in un unico grande libreria zip, alcune DLL non piace). - Assicurarsi che una copia di
msvcp71.dll
esiste sotto Windows \ System32 o nella directory del vostro eseguibile. - Prova a escludere la DLL esplicitamente (aggiungi Qwt.pyd all'opzione
dll_excludes
e (dopo la costruzione) copiare Qwt.pyd (e _Qwt.pyd se esiste) al percorso eseguibile.