2013-01-15 17 views
11

Sto iniziando a ottenere alcune informazioni sul disegno interattivo con python e matplotlib usando pyGTK +. Pertanto ho dato un'occhiata allo example given at the matplotlib website.ImportError: nessun modulo denominato _backend_gdk

Questa è una breve exerpt del Codice:

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

Ones provo a eseguire questo script nel terminale ottengo il seguente errore:

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 

ho python 2.7 e PyGTK 2.24 installato.

Qualcuno può capire dove si trova l'errore? Penso che potrebbe essere collegato ad alcuni problemi di collegamento?

+2

Come è stato installato matplotlib? '_backend_gdk' è un'estensione c-python che deve essere compilata. – tacaswell

+0

puoi compilarlo separatamente da matplotlib se matplotlib è già compilato? Costruisco matplotlib dal sorgente tramite il terminale. – Gjan

+0

probabilmente, ma collegarlo correttamente richiederà la replica della magia profonda che setup.py fa. – tacaswell

risposta

11

Nota che il pacchetto Debian/Ubuntu avete bisogno non è 'PyGTK2-devel' ma 'python-gtk2-dev':

sudo apt-get install python-gtk2-dev 

dovrebbe correggere questo errore su queste piattaforme.

+0

Questa risposta dovrebbe essere accettata. +1 per chiarezza, correttezza e concisione. –

+5

Questa risposta è irrilevante per il problema in questione – Davide

+0

Sì, questa risposta non aiuta. Ho installato pacchetti standard python-matplotlib e non posso tracciare i miei soliti backend GTK, anche se il file _backend_gdk è presente nel mio sistema. – jdpipe

5

Questo era un sintomo dell'utilizzo di un matplotlib installato sul pip invece di un matplotlib installato sul sistema, proprio ora. Se su Ubuntu/Debian, provo:

pip uninstall matplotlib 
apt install python-matplotlib 

Credo che ciò che stava accadendo è che il pip-installazione non costruire l'estensione C necessaria per l'uscita GTK, ma il pacchetto apt ha la precompilati estensione. Non ho i log dall'installazione iniziale dei pip di matplotlib, quindi non posso confermare che sia quello che è successo.

+0

Questo è semplicemente fastidioso, perché pip non funziona? Penso che dover installare il pacchetto da apt ci impedisca di utilizzare qualsiasi versione diversa da quella supportata ma dalla distro. Ancora ti ho trovato a rispondere all'unica soluzione funzionante. – 2LayerNN300HU