12

我开始深入了解使用 pyGTK+ 使用 python 和 matplotlib 进行交互式绘图。因此,我查看了 matplotlib 网站上给出的示例

这是代码的简短摘录:

#!/usr/bin/env python
"""
Example of embedding matplotlib in an application and interacting with
a treeview to store data.  Double click on an entry to update plot
data

"""
import pygtk
pygtk.require('2.0')
import gtk
from gtk import gdk

import matplotlib
matplotlib.use('GTKAgg')  # or 'GTK'
from matplotlib.backends.backend_gtk import FigureCanvasGTK as FigureCanvas

from numpy.random import random
from matplotlib.figure import Figure

我尝试在终端中运行此脚本时出现以下错误:

Traceback (most recent call last):
  File "gtk_spreadsheet.py", line 15, in <module>
    from matplotlib.backends.backend_gtk import FigureCanvasGTK as FigureCanvas
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_gtk.py", line 33, in <module>
    from matplotlib.backends.backend_gdk import RendererGDK, FigureCanvasGDK
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.py", line 29, in <module>
    from matplotlib.backends._backend_gdk import pixbuf_get_pixels_array
ImportError: No module named _backend_gdk

我安装了 python 2.7 和 pygtk 2.24。

任何人都可以找出错误的位置吗?我认为它可能与一些链接问题有关?

4

5 回答 5

13

请注意,您需要的 Debian/Ubuntu 软件包不是“pygtk2-devel”而是“python-gtk2-dev”:

sudo apt-get install python-gtk2-dev

应该在这些平台上修复此错误。

于 2013-02-05T16:48:08.250 回答
5

This was a symptom of using a pip-installed matplotlib instead of an apt-installed matplotlib on my system, just now. If on Ubuntu/Debian, try:

pip uninstall matplotlib
apt install python-matplotlib

I believe what was happening is that the pip-install didn't build the C extension required for GTK output, but the apt package has the extension prebuilt. I don't have logs from the initial pip install of matplotlib, so I can't confirm that that's what happened.

于 2017-02-16T19:34:50.137 回答
3

除了 Haldean Brown 的回答,请注意,如果您真的需要使用 pip,您可以强制它在本地重新编译 matplotlib 并使用以下--no-binary选项获得“setup.py 所做的深层魔法”:

pip uninstall matplotlib
pip install matplotlib --no-binary=matplotlib

这将解决您的问题,前提是您已经安装了 gtk2sudo apt-get install python-gtk2-dev

当您想使用 GTKAgg 后端时,使用 pip 可能会在未来将 matplotlib 冻结在支持它的版本(弃用警告指出它将在 3.0 中删除):

pip install matplotlib==2.2.2 --no-binary=matplotlib
于 2018-07-27T09:03:07.773 回答
1

Ubuntu 18.04 有一个损坏的 matplotlib 包。看到这个错误:https ://bugs.launchpad.net/ubuntu/+source/matplotlib/+bug/1785458

您可以自己编译 matplotlib(例如使用 pip)或使用错误报告中链接的 PPA。

于 2019-12-12T21:47:29.127 回答
0

如果您正在运行 py2.7 应用程序,请尝试:

pip2 install matplotlib --no-binary=matplotlib
于 2022-03-05T23:20:10.973 回答