Combinando PyQwt con py2exe
Pregunta
Tengo un script de configuración estándar para py2exe con el que incluyo aplicaciones basadas en PyQt en archivos .exe de Windows.
Hoy probé un script simple que usa el módulo PyQwt y no parece funcionar.py2exe se ejecuta bien, pero cuando ejecuto el .exe que crea, descarga lo siguiente en un archivo de registro y no se ejecuta:
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
cuando miro dentro PyQt4\Qwt5\
en el build\bdist.win32\winexe\collect-2.5
directorio, Qwt.pyd
Definitivamente está ahí.
Parece que no puedo encontrar nada útil en línea sobre este error.¿Qué podría causarlo?Gracias.
Solución
py2exe no es la única forma, y quizás no la mejor, de reunir archivos exe para aplicaciones Python; en particular, casi no es compatible con pyqt, si es que lo es.Por favor, te lo ruego, mira PyInstaller, que SÍ conoce PyQt (y Linux y Mac, si te importa...) - solo asegúrate de usar el control principal de SVN, no la versión "lanzada", que en este momento está muy desactualizada (una problema que, con suerte, desaparecerá pronto...).
Otros consejos
Algunas opciones:
- Trate de jugar con la
bundle_files options
py2xe (3, 2, 1) (sobre todo si se ponen todos en una gran postal de la biblioteca, algunos archivos DLL que no les gusta). - Asegúrese de que una copia de
msvcp71.dll
existe bajo Windows \ System32 o en el directorio de su ejecutable. - Intente excluir explícitamente el DLL (añadir Qwt.pyd a la opción
dll_excludes
y (después de la construcción) copiar Qwt.pyd (y _Qwt.pyd si es que existe) a su ruta ejecutable.