PyQt5在Python 3.5中调用matplotlib.pyplot时出现“没有名为'PyQt4'的模块”错误

时间:2017-05-18 14:49:09

标签: python matplotlib pyqt5

我在Windows 10机器上使用Anaconda和Python 3.5.2,Matplotlib 2.0.2,PyQt5.6。当我将matplotlib.pyplot导入为plt时,我收到以下错误:

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

ImportError: No module named 'PyQt4'

我不知道为什么它从未在我的机器上安装时从PyQt4导入。

This问题有相同的错误,但在实际安装了PyQt4的计算机上。

我已经检查了我的matplotlibrc文件,我在程序中使用了matplotlib.use('qt5agg')matplotlib.rcParams['backend'] = "Qt5Agg"。我已经卸载并重新安装上述所有软件包无济于事。我甚至试图安装PyQt4只是为了让事情顺利进行。我完全难过了。我在SO或github上找到的各种可能的原因或补救措施都没有帮助。

6 个答案:

答案 0 :(得分:1)

我遇到了同样的错误(即使在Windows 7上)。对我来说问题是matplotlibrc中有一个旧的C:\Users\<username>\.matplotlib\matplotlibrc文件覆盖了我的环境matplotlibrc文件中的设置。删除该文件为我解决了这个问题。

答案 1 :(得分:0)

查看错误中的文件和行号,看起来您遇到的问题与here相同。

也就是说,我认为您的问题是由QT_API环境变量设置为pyqt4(或pyside)引起的。

答案 2 :(得分:0)

我遇到了类似的事情,发现问题是64位Anaconda安装无法加载可能是32位的PyPt5 DLL。简短的回答是我卸载了Anaconda 64位并安装了32位版本。

为了解决这个问题,我逐步完成了错误发生的qt_compat.py。在大多数情况下,通过这个模块,它正在尝试使用PyQt5,因为它在环境中找到了它。但是,当它到达下面的行时,导入失败,所以它试图回退到没有安装Anaconda的PyQt4,从而发出错误。

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

测试文件外部的import语句会显示消息“DLL加载失败:%1不是有效的Win32应用程序。”这就是DLL不匹配的原因,也解释了为什么它试图回退到PyQt4。 / p>

答案 3 :(得分:0)

3个步骤可以解决这个问题:

pip uninstall pyqt5
pip uninstall matplotlib
pip install matplotlib

答案 4 :(得分:0)

似乎API版本是PyQt5,但默认是PyQt4,只需打开工具 - &gt;偏好 - &gt; IPython控制台 - &gt;图形 - &gt;后端,将QT4更改为QT5

答案 5 :(得分:0)

我遇到了同样的问题,这就是我修复它的方法。

查看通常位于的matplotlib配置文件 路径为/站点包/ matplotlib / MPL-数据/ matplotlibrc 要么 路径到/ Anaconda3 / ENVS / your_env_name / LIB /站点包/ matplotlib / MPL-数据/ matplotlibrc

在这里查看matplotlibrc的示例 https://github.com/daler/matplotlibrc/blob/master/rc/default

如果您安装了pyqt5.xx并在matplotlibrc中使用了'backend:Qt5Agg'语句,那么要使用'%matplotlib qt',将'#backend.qt4:PyQt4'更改为'#backend.qt4:PyQt5'。

对于Anaconda环境,请重新激活环境。

请注意,如果您将来更新matplotlib,您的matplotlibrc将自动被覆盖。