Gtk * backend requiere que se instale pygtk

Desde dentro de un entorno virtual, al intentar cargar un script que usa el backend GTKAgg , fallo con el siguiente rastreo:

 Traceback (most recent call last): File "", line 1, in  File "/home/user/.virtualenvs/venv/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 97, in  _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup() File "/home/user/.virtualenvs/venv/local/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 25, in pylab_setup globals(),locals(),[backend_name]) File "/home/user/.virtualenvs/venv/local/lib/python2.7/site-packages/matplotlib/backends/backend_gtkagg.py", line 10, in  from matplotlib.backends.backend_gtk import gtk, FigureManagerGTK, FigureCanvasGTK,\ File "/home/user/.virtualenvs/venv/local/lib/python2.7/site-packages/matplotlib/backends/backend_gtk.py", line 16, in  raise ImportError("Gtk* backend requires pygtk to be installed.") ImportError: Gtk* backend requires pygtk to be installed. 

El código que ejecuté para producir ImportError es el siguiente:

 import matplotlib as mpl mpl.use('GTKAgg') import matplotlib.pyplot as plt 

Cuando ejecuto el mismo código después de desactivar mi entorno virtual, todo va bien.

Supuse que esto podría deberse a diferencias de versión; De hecho, tales diferencias existen en mi máquina. Sin embargo, la versión en el entorno virtual es más nueva (1.2.0 versus 1.1.1rc), por lo que no espero menos soporte.

En caso de que no quede claro: mi pregunta es cómo permitir la importación de pyplot con el backend GTKAgg en una nueva versión de matplotlib , o al menos un bash de comprender los motivos de este error de importación.

Probablemente creaste tu evento virtual por algo como:

  $ virtualenv ~/.virtualenvs/my_env 

por defecto, esto no puede ver ninguno de los paquetes instalados en el sistema (incluido pygtk), por lo que cuando intenta ejecutar mpl, se queja correctamente de que no tiene instalado pygtk porque (con el contexto virtualenv) no lo tiene.

Puede construir e instalar pygtk dentro de su virtualenv o puede usar

 $ virtualenv --system-site-packages ~/.virtualenvs/my_env 

( doc ) que hará que su virtualenv herede de sus paquetes globales.

No estoy seguro de si estás en Ubuntu, pero para resolver esto tuve que instalar matplotlib desde la fuente para que esto funcione. Las instrucciones clave (de http://www.pyimagesearch.com/2015/08/24/resolved-matplotlib-figures-not-showing-up-or-displaying/ ) son:

 $ workon plotting $ pip uninstall matplotlib $ git clone https://github.com/matplotlib/matplotlib.git $ cd matplotlib $ python setup.py install 

Cambiar de backends y usar –system-site-packages no me funcionó.