PyQt5 recibe el error “Ningún módulo llamado ‘PyQt4′” al llamar a matplotlib.pyplot en Python 3.5

Estoy usando Anaconda con Python 3.5.2, Matplotlib 2.0.2, PyQt5.6 en una máquina con Windows 10. Cuando importo matplotlib.pyplot como plt obtengo el siguiente error:

... File "C:...\Anaconda3\Lib\site-packages\matplotlib\backends\qt_compat.py", line 137, in  from PyQt4 import QtCore, QtGui ImportError: No module named 'PyQt4' 

No sé por qué querría importar desde PyQt4 cuando nunca se ha instalado en mi máquina.

Esta pregunta tiene el mismo error, pero en una máquina que realmente tiene instalado PyQt4.

He revisado mi archivo matplotlibrc, he usado matplotlib.use('qt5agg') en el progtwig, también matplotlib.rcParams['backend'] = "Qt5Agg" . He desinstalado y reinstalado todos los paquetes anteriores sin éxito. Incluso he intentado instalar PyQt4 solo para que todo funcione. Estoy completamente perplejo. Ninguna de las varias posibles causas o remedios que he podido encontrar en SO o github ha ayudado.

Acabo de tener el mismo error (aunque en Windows 7). Para mí, el problema era que había un archivo matplotlibrc antiguo en C:\Users\\.matplotlib\matplotlibrc que C:\Users\\.matplotlib\matplotlibrc la configuración del archivo matplotlibrc de mi entorno. Eliminar ese archivo solucionó el problema para mí.

Mirando el archivo y el número de línea en su error, parece que tiene el mismo problema que respondí aquí .

Es decir, creo que su problema se debe a que tiene una variable de entorno QT_API que aún está configurada en pyqt4 (o pyside ).

Me encontré con algo similar y descubrí que el problema era tener una instalación de Anaconda de 64 bits que no podía cargar las DLL de PyPt5 que eran quizás de 32 bits. La respuesta corta es que desinstalé Anaconda de 64 bits e instalé la versión de 32 bits en su lugar.

Para resolver esto, pasé por qt_compat.py donde se origina el error. Durante la mayor parte del tiempo, a través de este módulo, se intenta trabajar con PyQt5, ya que eso es lo que encuentra en el entorno. Sin embargo, cuando llega a las líneas de abajo, la importación falla, por lo que intenta recurrir a PyQt4, que no está instalado con Anaconda, y por lo tanto emite el error.

 if QT_API == QT_API_PYQT5: try: from PyQt5 import QtCore, QtGui, QtWidgets _getSaveFileName = QtWidgets.QFileDialog.getSaveFileName except ImportError: # fell through, tried PyQt5, failed fall back to PyQt4 QT_API = rcParams['backend.qt4'] QT_RC_MAJOR_VERSION = 4 

Probar la statement de importación fuera del archivo dio el mensaje “Error en la carga de DLL:% 1 no es una aplicación Win32 válida”. Eso es lo que sugiere la falta de coincidencia de DLL, y también responde por qué estaba intentando recurrir a PyQt4.

3 pasos pueden resolver este problema:

 pip uninstall pyqt5 pip uninstall matplotlib pip install matplotlib 

Parece que la versión de la API es PyQt5, pero la predeterminada es PyQt4, simplemente abra Herramientas -> Preferencias -> Consola IPython -> Gráficos -> Backend, cambie QT4 a QT5

Me había enfrentado al mismo problema y aquí es cómo lo solucioné.

Busque en su archivo de configuración matplotlib que a menudo se encuentra en path-to / site-packages / matplotlib / mpl-data / matplotlibrc o path-to / Anaconda3 / envs / your_env_name / Lib / site-packages / matplotlib / mpl-data / matplotlibrc

Vea un ejemplo de matplotlibrc aquí https://github.com/daler/matplotlibrc/blob/master/rc/default

Si tiene pyqt5.xx instalado y tiene la instrucción ‘backend: Qt5Agg’ en matplotlibrc, entonces para usar ‘% matplotlib qt’, cambie ‘# backend.qt4: PyQt4’ a ‘# backend.qt4: PyQt5’.

Para un entorno de Anaconda, reactivar el entorno.

Tenga en cuenta que si actualiza matplotlib en el futuro, su matplotlibrc se sobrescribirá automáticamente.