PyQt5得到;没有名为';PyQt4'&引用;在Python 3.5中调用matplotlib.pyplot时出错
我正在windows 10计算机上使用Anaconda和Python 3.5.2、Matplotlib 2.0.2、PyQt5.6。当我将matplotlib.pyplot作为plt导入时,出现以下错误:PyQt5得到;没有名为';PyQt4'&引用;在Python 3.5中调用matplotlib.pyplot时出错,python,matplotlib,pyqt5,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, Qt
...
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'
。。。
文件“C:…\Anaconda3\Lib\site packages\matplotlib\backends\qt\u compat.py”,
第137行,从PyQt4导入QtCore,QtGui
ImportError:没有名为“PyQt4”的模块
我不知道为什么它要从PyQt4导入,而我的机器上从未安装过它
问题有相同的错误,但在实际安装了PyQt4的计算机上
我已经检查了matplotlibrc文件,在程序中使用了
matplotlib.use('qt5agg')
,还使用了matplotlib.rcParams['backend']=“qt5agg”
。我已经卸载并重新安装了上述所有软件包,但都没有用。我甚至尝试安装PyQt4只是为了让事情顺利进行。我完全被难住了。我在SO或github上找到的各种可能的原因或补救措施都没有起到任何作用。查看错误中的文件和行号,您的问题似乎与我回答的问题相同
也就是说,我认为问题是由
QT_API
环境变量仍然设置为pyqt4
(或pyside
)引起的 我也有同样的错误(即使是在Windows7上)。对我来说,问题在于C:\Users\\.matplotlib\matplotlibrc
中有一个旧的matplotlibrc
文件,它从我的环境的matplotlibrc
文件中重写了设置。删除该文件为我解决了问题。我遇到了类似的问题,发现问题在于安装了64位Anaconda,无法加载可能是32位的PyPt5 DLL。简而言之,我卸载了64位Anaconda,安装了32位版本
为了解决这个问题,我在qt_compat.py中找到了错误的来源。在本模块的大部分时间里,它都在尝试使用PyQt5,因为它在环境中找到了PyQt5。但是,当它到达下面的行时,导入失败,因此它尝试退回到PyQt4,PyQt4没有安装Anaconda,因此发出错误
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
在文件外部测试导入语句时,会显示消息“DLL加载失败:%1不是有效的Win32应用程序”。这就是DLL不匹配的原因,也回答了它试图返回PyQt4的原因。3个步骤可以解决此问题:
pip uninstall pyqt5
pip uninstall matplotlib
pip install matplotlib
API版本似乎是PyQt5,但默认是PyQt4,只需打开工具->首选项->IPython控制台->图形->后端,将QT4更改为QT5,我曾经遇到过同样的问题,下面是我如何修复它的 查看matplotlib配置文件,该文件通常位于 /site packages/matplotlib/mpl data/matplotlibrc的路径 或 /Anaconda3/envs/your_env_name/Lib/site packages/matplotlib/mpl data/matplotlibrc的路径 请参见此处的matplotlibrc示例 如果已安装pyqt5.x.x,并且matplotlibrc中有语句“backend:Qt5Agg”,则要使用“%matplotlib qt”,请将“#backend.qt4:PyQt4”更改为“#backend.qt4:pyqt5” 对于蟒蛇环境,请重新激活该环境
注意:如果将来更新matplotlib,matplotlibrc将自动被覆盖。您需要使用pip安装PyQt4。您的matplotlib版本需要PyQt4。请参见如何安装否,如果应该使用PyQt5,则安装PyQt4没有意义。你能试试导入matplotlib吗;matplotlib.use(“Qt5Agg”);matplotlib.rcParams[“verbose.level”]=“debug”;将matplotlib.pyplot作为plt导入,查看是否提供了更多信息,您可以在此处发布这些信息?错误基本相同。后端实际上设置为qt5agg.py,但如上所述,它在调用qt_compat.py.thanking之后开始查找qt4。我对
print(os.environ.get('QT_-API'))的响应为“None”
。我设置了系统变量,现在对print(os.environ.get('QT_-API'))的响应为“pyqt5”
。但是错误仍然存在。前进的方向是查看qt_compat.py
,并尝试调试它为什么尝试在第137行导入PyQt4。最好的方法是将qt\u compat.py
复制到一个临时目录,然后从该目录启动python-m qt\u compat
。这会给您带来相同的错误,但是现在您可以在qt_compat.py
的副本中添加一些打印语句,以便更容易地调试问题。导入上方的行显示如果[QT\u API\u PYQT,QT\u API\u PYQTv2]
中有QT\u API。首先在该点打印QT_API
全局变量的值。我相信你可以从这方面取得一些进展。现在我从PyQt5中得到,c:…\qt\u compat.py(127)(->导入QtCore,QtGui,qtwidts(Pdb)>c:\…\qt\u compat.py(128)(->\u getSaveFileName=qtwidts.QFileDialog.getSaveFileName(Pdb)AttributeError:module'PyQt5.qtwidts'没有属性'QFileDialog'
。在qtwidts.pyw中有QFileDialog类。我的专业知识已经到了极限。我正在考虑完全卸载/重新安装anaconda。真是一团糟:-)。我必须说,我不知道是什么导致了最后一个问题。也许重新安装是个好主意,或者您可以先在新的conda环境中尝试,在该环境中,您只安装所需的内容。当您参考open Tools->时,您使用的是哪个程序。。。?