2013-01-15 29 views
11

我开始深入了解使用pyGTK +与python和matplotlib交互绘图。所以我看了一下example given at the matplotlib websiteImportError:没有名为_backend_gdk的模块

这是代码的短exerpt:

#!/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 

我有蟒蛇2.7和PyGTK的2.24安装。

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

+2

你是怎么安装matplotlib的? '_backend_gdk'是一个需要编译的c-python扩展。 – tacaswell

+0

如果matplotlib已经编译好了,yoo可以从matplotlib单独编译它吗?我通过终端从源码构建matplotlib。 – Gjan

+0

很可能,但正确连接它需要复制setup.py所具有的深层魔法。 – tacaswell

回答

11

请注意,你需要的是Debian/Ubuntu的软件包是不是 'PyGTK2的-devel的',但 '中的python-GTK2-dev的':

sudo apt-get install python-gtk2-dev 

应该在这些平台上解决这个错误。

+0

这个答案应该被接受。 +1为清晰,正确和简洁。 – 2014-02-16 05:37:42

+5

这个答案与手边的问题无关 – Davide

+0

是的,这个答案没有帮助。我已经安装了标准的python-matplotlib软件包,并且我无法使用通常的GTK后端进行绘图,即使_backend_gdk文件存在于我的系统中。 – jdpipe

5

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

pip uninstall matplotlib 
apt install python-matplotlib 

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

+0

这只是烦人的,为什么pip不起作用?我认为必须从apt安装软件包才能使用除发行版以外的任何版本。不过,我发现你回答了唯一的工作解决方案。 – 2LayerNN300HU

相关问题