2013-01-15 63 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

相關問題