Gtk *后端需要安装pygtk

时间:2014-03-10 15:23:24

标签: python matplotlib gtk pygtk

在虚拟环境中,尝试加载使用matplotlib的{​​{1}}后端的脚本,我遇到以下追溯失败:

GTKAgg

我为了生成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. 而运行的代码如下:

ImportError

在停用虚拟环境后运行完全相同的代码时,一切顺利。

我认为这可能是由于版本差异造成的;实际上,我的机器上存在这种差异。但是,虚拟环境中的版本是较新(1.2.0对1.1.1rc),所以我不期望得到更少的支持。

如果不清楚:我的问题是如何允许在import matplotlib as mpl mpl.use('GTKAgg') import matplotlib.pyplot as plt 的新版本上导入pyplot GTKAgg后端,或者至少尝试了解其原因这种导入失败。

2 个答案:

答案 0 :(得分:5)

您可能通过以下方式创建了虚拟evn:

 $ virtualenv ~/.virtualenvs/my_env

默认情况下,这可以看不到你的系统安装的软件包(包括pygtk)所以当你尝试运行mpl时,它会正确地抱怨你没有安装pygtk,因为(在virtualenv的上下文中)你没有。

您可以在virtualenv中构建和安装pygtk,也可以使用

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

doc)将使你的virtualenv继承你的全局包。

答案 1 :(得分:1)

我不确定您是否使用Ubuntu,但要解决此问题,我必须从源代码安装matplotlib才能使其正常工作。关键指令(来自http://www.pyimagesearch.com/2015/08/24/resolved-matplotlib-figures-not-showing-up-or-displaying/)是:

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

更改后端并使用--system-site-packages对我没有用。