我在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上找到的各种可能的原因或补救措施都没有帮助。
答案 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将自动被覆盖。