我第一次看到this question的答案,我发现我需要安装自己的后端框架。由于答案提到了PyQt4,我选择了这个。在文档中的链接之后,我最终最终下载了SIP(PyQt4的pre-req),然后是here的PyQt4。最后,在我的代码中,我有:
import matplotlib
matplotlib.use('Qt4agg') # need to call use() before importing plt
import matplotlib.pyplot as plt
但是我仍然收到此错误:
追踪(最近一次通话): 文件“... / venv / lib / python3.5 / site-packages / matplotlib / backends / qt_compat.py”,第159行, 来自PySide导入QtCore,QtGui,版本, version_info ImportError:没有名为'PySide'的模块
在处理上述异常期间,发生了另一个异常:
追踪(最近一次呼叫最后一次):
文件“... / program.py”,第7行,in 将matplotlib.pyplot导入为plt文件“... / venv / lib / python3.5 / site-packages / matplotlib / pyplot.py”,第114行, 在 _backend_mod,new_figure_manager,draw_if_interactive,_show = pylab_setup()
文件 “... / VENV / lib中/ python3.5 /站点包/ matplotlib /后端/ 的init 的.py” 第32行,在pylab_setup中 全局(),当地人(),[backend_name],0)
文件 “... / VENV / lib中/ python3.5 /站点包/ matplotlib /后端/ backend_qt4agg.py” 第18行,在 从.backend_qt5agg导入FigureCanvasQTAggBase为_FigureCanvasQTAggBase
文件 “... / VENV / lib中/ python3.5 /站点包/ matplotlib /后端/ backend_qt5agg.py” 第15行,在 来自.backend_qt5导入QtCore
文件 “... / VENV / lib中/ python3.5 /站点包/ matplotlib /后端/ backend_qt5.py” 第31行,在 来自.qt_compat import QtCore,QtGui,QtWidgets,_getSaveFileName,版本
文件 “... / VENV / lib中/ python3.5 /站点包/ matplotlib /后端/ qt_compat.py” 第162行,in “Matplotlib基于qt的后端需要外部PyQt4,PyQt5,\ n”ImportError:基于Matplotlib qt的后端需要外部PyQt4, 要安装PyQt5或PySide包,但未找到它。
以前有没有人经历过这个?有关从何处开始的任何调试建议或帮助?
编辑:我要补充说,尝试从我的虚拟环境import PyQt4
起作用,所以我不确定为什么matplotlib找不到它......
EDIT2:不确定是否重要,但我正在使用PyCharm
答案 0 :(得分:4)
我在这方面挣扎了好几天,在查看了大量不同的堆栈溢出帖后,终于找到了一个非常简单的解决方案。
这是我对MacOSX和Python3.X的解决方案,适用于已经通过自制软件安装python3(即brew install python3
)并安装了virtualenv且已经使用python3创建的虚拟环境的人(例如通过virtualenvwrapper,{{ 1}}):
(1)使用brew安装pyqt和sip:
mkvirtualenv myvenv -p python3
(2)将 $ brew install sip --with-python3
$ brew install pyqt --with-python3
中安装的pyqt和sip文件(自制软件安装的默认位置)链接到virtualenv中的site-packages目录:
/usr/local/Cellar/
确保根据系统需要修改大括号{}中的文本,其中VIRTUALENVHOME是虚拟环境的路径,VIRTUALENVNAME是其名称,SIPVERSION和PYQTVERSION是您的sip和pyqt的版本下载。只需查看相应的目录 $ ln -s /usr/local/Cellar/sip/{SIPVERSION}/lib/python3.X/site-packages/*.* ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/lib/python3.X/site-packages/
$ ln -s /usr/local/Cellar/pyqt/{PYQTVERSION}/lib/python3.X/site-packages/PyQt4/*.* ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/lib/python3.X/site-packages/PyQt4
和/usr/local/Cellar/sip
即可找到这些目录(这些目录的内容应该是版本号的单个目录)。另外不要忘记插入你正在使用的python3版本! (进入python3.X的所有地方)
(3)在你的virtualenv pip install matplotlib(如果你还没有)并修改matplotlibrc,以便matplotlib使用PyQt4后端而不是默认的macosx后端:
/usr/local/Cellar/pyqt
这将在默认的终端文本编辑器中打开 # activate your virtual environment
$ workon VIRTUALENVNAME # if you are using virtualenvwrapper
$ #source ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/bin/activate # if you are not using virtualenvwrapper
# if you haven't already, install matplotlib
$ pip install matplotlib
# modify the matplotlibrc file to change the backend it is using
$ nano ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc
(或者您可以使用matplotlibrc
代替open -e
在TextEdit中打开它。在nano
之后转到第一部分,将第#### CONFIGURATION BEGINS HERE
行更改为backend : macosx
。在下一部分中,取消注释行backend : Qt4Agg
。
完成此操作后,您应该启动并运行。您可以使用以下简单的代码行测试它是否有效(假设您在虚拟环境中安装了ipython):
backend.qt4 : PyQt4
图表应以直线显示。如果这不起作用,请尝试在虚拟环境中重新安装matplotlib(即 $ ipython -pylab
>>> import numpy as np
>>> plot(np.arange(10))
和pip uninstall matplotlib
)。
答案 1 :(得分:2)
您是否要使用conda
代替virtualenv
?
conda create -n matplotenv matplotlib
source activate matplotenv
python -c "import matplotlib.pyplot as plt
p = plt.plot([1,2,3])
plt.show()"
source deactivate
答案 2 :(得分:2)
在此之后解决了这个问题:
pip install matplotlib 您的根目录中有一个名为〜/ .matplotlib的目录。
在那里创建一个〜/ .matplotlib / matplotlibrc文件并添加以下代码:backend:TkAgg
答案 3 :(得分:0)
我遇到了同样的问题,我所做的实际上解决了它(如果你不理解Jorge说的话,那可能会有所帮助!):
1.继续使用anaconda导航仪并启动qtconsole
2.输入:$ brew install sip --with-python3
$ brew install pyqt --with-python3
3.在python中复制它的结果,并执行。
现在尝试制作图表,它应该有效!