ImportError:没有名为_backend_gdk的模块

时间:2013-01-15 20:16:28

标签: python matplotlib pygtk

我开始使用pyGTK +了解使用python和matplotlib进行交互式绘图。因此,我查看了example given at the matplotlib website

这是守则的短暂内容:

#!/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 个答案:

答案 0 :(得分:13)

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

sudo apt-get install python-gtk2-dev

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

答案 1 :(得分:5)

这是我刚刚在我的系统上使用pip安装的matplotlib而不是apt安装的matplotlib的症状。如果在Ubuntu / Debian上,请尝试:

pip uninstall matplotlib
apt install python-matplotlib

我相信正在发生的事情是pip-install没有构建GTK输出所需的C扩展,但是apt包具有预构建的扩展。我没有matplotlib最初的pip安装日志,所以我无法确认发生了什么。

答案 2 :(得分:2)

除了Haldean Brown的答案外,请注意,如果您确实需要使用pip,则可以强制其在本地重新编译matplotlib,并使用--no-binary选项获得“ setup.py可以做到的深层魔术”:

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

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

当您要使用GTKAgg后端时,使用pip在将来可能会被证明有用,可以将matplotlib冻结在受支持的版本上(弃用警告指出它将在3.0中删除):

pip install matplotlib==2.2.2 --no-binary=matplotlib

答案 3 :(得分:0)

Ubuntu 18.04的matplotlib软件包已损坏。看到此错误:https://bugs.launchpad.net/ubuntu/+source/matplotlib/+bug/1785458

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