PySide y PyQt chocan al empaquetar pylab en Windows 7

Intenté empaquetar un pequeño script que hace algunos trazados con pylab. Utilicé pyinstaller bajo Linux sin problemas, pero bajo Windows 7 obtengo un error. En una computadora diferente que tiene PySide pero no PyQt instaló el paquete funcionó. De este modo, al eliminar PyQt puedo hacer que funcione en mi otra computadora. Sin embargo, me gustaría saber si hay otra forma de solucionar este problema, ya que tengo algunos scripts que usan PyQt y otros que usan PySide. Obtuve un error similar usando cx_freeze.

Gracias por tu ayuda, Daniel

Código de ejemplo que muestra el problema:

from pylab import * labels = 'Cakes', 'Cookies', 'Biscuits', 'Tarts' fracs = [27, 33, 14, 19] pie(fracs, labels=labels, autopct='%1.1f%%', startangle=90) show() 

Error producido al ejecutar el progtwig empaquetado:

 WARNING: file already exists but should not: C:\Users\..\Temp\_MEI61562\Include\pyconfig.h Traceback (most recent call last): File "", line 1, in  File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module exec(bytecode, module.__dict__) File "C:\Workspace\ZLC_python\build\test\out00-PYZ.pyz\pylab", line 1, in  File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module exec(bytecode, module.__dict__) File "C:\Workspace\ZLC_python\build\test\out00-PYZ.pyz\matplotlib.pylab", line 269, in  File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module exec(bytecode, module.__dict__) File "C:\Workspace\ZLC_python\build\test\out00-PYZ.pyz\matplotlib.pyplot", line 93, in  File "C:\Workspace\ZLC_python\build\test\out00-PYZ.pyz\matplotlib.pyplot", line 80, in _backend_selection File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 409, in load_module module = imp.load_module(fullname, fp, filename, self._c_ext_tuple) ImportError: DLL load failed: The specified procedure could not be found. 

Siguiendo las sugerencias de Pyinstaller –onefile warning pyconfig.h al importar scipy o scipy.signal, me deshice de la advertencia pero el error persiste.

Versiones:

  • Python 2.7.5
  • PySide 1.2.1
  • PyQt 4.9.6-3
  • matplotlib 1.2.1
  • numpy 1.7.1
  • pyinstaller 2.1

Eché un vistazo más de cerca a la documentación de pyinstaller y encontré una solución para pyinstaller. Utilicé la opción de exclusión en el bloque de análisis del archivo de especificaciones:

 # -*- mode: python -*- a = Analysis(['test.py'], pathex=['C:\\Workspace\\ZLC_python'], hiddenimports=[], hookspath=None, excludes=['PyQt4'], runtime_hooks=None) for d in a.datas: if 'pyconfig' in d[0]: a.datas.remove(d) break pyz = PYZ(a.pure) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, name='test.exe', debug=False, strip=None, upx=True, console=True )