PyQt5和Matplotlib 1.4.2 - 安装一个打破另一个

时间:2014-11-18 00:38:36

标签: python matplotlib pyqt4 pyqt5

我正在尝试编写一个在其中嵌入matplotlib图的PyQt5应用程序。但是,我有一个令人抓狂的时间,如果我安装matplotlib PyQt5由于PyQt4的干扰而中断。这可以在以下错误中看到:

In [2]: from PyQt5 import QtCore, QtGui, QtWidgets
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-2-43848d5bd21e> in <module>()
----> 1 from PyQt5 import QtCore, QtGui, QtWidgets

RuntimeError: the PyQt5.QtCore and PyQt4.QtCore modules both wrap the QObject class

如果我删除PyQt4(并重新安装PyQt5,因为删除PyQt4会删除sip)我就会遇到这个问题:

In [1]: import matplotlib.backends.backend_qt5agg
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-6d2c21e1d629> in <module>()
----> 1 import matplotlib.backends.backend_qt5agg

C:\Anaconda3\lib\site-packages\matplotlib\backends\backend_qt5agg.py in <module>()
     16
     17 from .backend_agg import FigureCanvasAgg
---> 18 from .backend_qt5 import QtCore
     19 from .backend_qt5 import QtGui
     20 from .backend_qt5 import FigureManagerQT

C:\Anaconda3\lib\site-packages\matplotlib\backends\backend_qt5.py in <module>()
     29     figureoptions = None
     30
---> 31 from .qt_compat import QtCore, QtGui, QtWidgets, _getSaveFileName, __version__
     32 from matplotlib.backends.qt_editor.formsubplottool import UiSubplotTool
     33

C:\Anaconda3\lib\site-packages\matplotlib\backends\qt_compat.py in <module>()
     89     if QT_API in [QT_API_PYQT, QT_API_PYQTv2]:  # PyQt4 API
     90
---> 91         from PyQt4 import QtCore, QtGui
     92
     93         try:

ImportError: cannot import name 'QtCore'

我多次经历这个循环,从不同来源安装每个循环。我正在使用Python 3.4的Anaconda发行版,我已经卸载/重新安装了一次。

我一定是做错了什么,但老实说我不知道​​它是什么。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:11)

由于matplotlib依赖于PyQt4,因此需要强制Matplotlib使用PyQt5后端。像这样:

import matplotlib
matplotlib.use("Qt5Agg")

在导入pyplot之前,必须将此函数称为         第一次;或者,如果您不使用pyplot,则必须调用它         在导入matplotlib.backends之前。

答案 1 :(得分:0)

问题是Matplotlib使用QT5而你正在使用QT4。要解决这个问题,可以通过编辑matplotlibrc强制Matplotlib使用QT4,它位于\ Lib \ site-packages \ matplotlib \ mpl-data enter image description here