PyQt4 necesita mover DLL para empaquetar la raíz

He usado los nuevos instaladores de http://www.riverbankcomputing.co.uk/software/pyqt/download para Python 2.6 x86_64 y tengo un pequeño problema al importar PyQt4 en una aplicación en particular.

Aquí está el rastreo:

# ERROR : Traceback (most recent call last): # File "", line 2, in  # from PyQt4 import QtCore # ImportError: DLL load failed: The specified procedure could not be found. # - [line 2] 

Esto puede parecer familiar. Lo divertido es que en una versión anterior del software 3D funciona (y desde una línea de comando estándar), pero no en la nueva versión del software. Inspeccioné el sys.path (dentro de la aplicación) para ver si esta ruta estaba allí: C: \ Python26 \ Lib \ site-packages \ PyQt4 \ bin

En ambas aplicaciones esta ruta está presente.

Finalmente, logré hacer que funcionara copiando los DLL de C: \ Python26 \ Lib \ site-packages \ PyQt4 \ bin a C: \ Python26 \ Lib \ site-packages \ PyQt4

¿Hay alguna razón conocida para esto? Me cuesta mucho depurar esto (asegurarme de que todo sea de 64 bits, la ruta sea correcta, etc.)

Gracias por tu ayuda

El problema podría ser que los instaladores de PyQt4 agreguen el directorio PyQt4 \ bin a la ruta de búsqueda de DLL de Windows. Si tiene instaladas las versiones de 32 y 64 bits, solo una encontrará el conjunto correcto de DLL.

La solución es agregar el siguiente código a cada archivo Lib \ site-packages \ PyQt4_ init_.py:

 import os os.environ['PATH'] = ';'.join((os.path.join( os.path.abspath(os.path.dirname(__file__)), "bin"), os.environ['PATH'])) 

En mi carpeta ...\PyQt4\bin , hay principalmente algunos ejecutables y muchos DLL, probablemente los Qt originales. No usas estos de Python. Utiliza los archivos .pyd (que son DLL bajo el capó), que son, al menos en mi instalación, Python 3.1 bajo 32 bit Win7, en el directorio principal (solo ...\PyQt4 ) y contienen el código que envuelve Qt para uso de Python.