matplotlib在qt4agg后端使用pyplot.show()时无法打开绘图,找不到sip

3 投票
1 回答
2514 浏览
提问于 2025-04-18 11:52

我有一个跟这个问题很相似的问题:matplotlib虽然调用了pyplot.show(),但我的图形不显示

我使用的是:

Ubuntu 12.04;

Python 3.4.1;

Pycharm 3.4.1

所以,我在pyCharm中用3.4.1的解释器运行了以下代码,但图形没有出现:

import matplotlib.pyplot as p 
p.plot(range(20), range(20))
p.show()

然后我想可能是pyCharm的问题,于是我在终端里试了一下。但是,图形也没有出现。

不过,由于Ubuntu自带Python 2.7,我在终端和pyCharm中都试了一下,图形就出现了。

我发现matplotlibrc文件中的后端设置需要更改。我在网上查了一下,发现应该使用qt4agg后端。更改后,我尝试导入matplotlib.pyplot,结果出现了以下内容:

import matplotlib.pyplot as p
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/usr/local/lib/python3.4/dist-packages/matplotlib/pyplot.py", line 98, in <module>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
File "/usr/local/lib/python3.4/dist-packages/matplotlib/backends/__init__.py", line 28, in pylab_setup
globals(),locals(),[backend_name],0)
File "/usr/local/lib/python3.4/dist-packages/matplotlib/backends/backend_qt4agg.py", line 13, in <module>
from .backend_qt4 import QtCore, QtGui, FigureManagerQT, FigureCanvasQT,\
File "/usr/local/lib/python3.4/dist-packages/matplotlib/backends/backend_qt4.py", line 25, in <module>
from .qt4_compat import QtCore, QtGui, _getSaveFileName, __version__
File "/usr/local/lib/python3.4/dist-packages/matplotlib/backends/qt4_compat.py", line 36, in <module>
import sip
ImportError: No module named 'sip'

因此,我使用以下命令安装了sip:

 sudo apt-get install python3-sip

但同样的错误又出现了。

我正在试图找出SIP哪里出了问题。不过,我有点困惑,任何帮助都将不胜感激。谢谢

1 个回答

1

好的,经过很多努力,我终于搞定了。

首先,我电脑里可能有三四个不同的Python版本:默认的2.7,还有3.2、3.4.0和3.4.1。每个版本的matplotlib(一个绘图库)也不一样,大多数都是1.3.1。所以,第一步我把那些没用的Python版本(3.2和3.4)给删掉了。

接下来,我把所有的matplotlib文件夹都删除了。我参考了matplotlib的文档,确定哪些文件夹需要删除才能彻底清除它。(http://matplotlib.org/contents.html)

之后,我从git上克隆了最新的matplotlib版本(http://matplotlib.org/faq/installing_faq.html#install-from-git),然后安装了它。这个时候,matplotlib的版本是1.4。然后我又试着运行我之前的例子,结果成功了。没有更改任何后端设置。

所以,彻底清除旧版本并安装最新版本就解决了问题。

撰写回答