Gtk* backend requires pygtk to be installed

匿名 (未验证) 提交于 2019-12-03 08:46:08

问题:

From within a virtual environment, trying to load a script which uses matplotlib's GTKAgg backend, I fail with the following traceback:

Traceback (most recent call last):   File "<stdin>", line 1, in <module>   File "/home/user/.virtualenvs/venv/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 97, in <module>     _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 <module>     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 <module>     raise ImportError("Gtk* backend requires pygtk to be installed.") ImportError: Gtk* backend requires pygtk to be installed. 

The code which I ran in order to produce that ImportError is as follows:

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

When running the very same code after deactivating my virtual environment, everything goes well.

I assumed this may be due to version differences; indeed, such differences exist on my machine. However, the version in the virtual environment is newer (1.2.0 versus 1.1.1rc), so I am not expecting less support.

In case it is not clear: my question is how to allow importing pyplot with GTKAgg backend on a new version of matplotlib, or at least an attempt to understand the reasons for this import failure.

回答1:

You probably created your virtual evn by something like:

 $ virtualenv ~/.virtualenvs/my_env 

by default this can see none of your system-installed packages (including pygtk) so when you try to run mpl it rightly complains that you do not have pygtk installed because (with in the context of the virtualenv) you do not.

You can either build and install pygtk within your virtualenv or you can use

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

(doc) which will make your virtualenv inherit from your global packages.



回答2:

I'm not sure if you're on Ubuntu, but to solve this I had to install matplotlib from source to get this to work. The key instructions (from http://www.pyimagesearch.com/2015/08/24/resolved-matplotlib-figures-not-showing-up-or-displaying/) are:

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

Changing backends and using --system-site-packages didn't work for me.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!