【问题标题】:Gtk* backend requires pygtk to be installedGtk* 后端需要安装 pygtk
【发布时间】:2016-06-02 23:11:27
【问题描述】:

在虚拟环境中,尝试加载使用 matplotlibGTKAgg 后端的脚本时,我因以下回溯而失败:

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 而运行的代码如下:

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

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

我认为这可能是由于版本差异;确实,我的机器上存在这样的差异。但是,虚拟环境中的版本更新(1.2.0 对 1.1.1rc),所以我预计支持不会减少。

如果不清楚:我的问题是如何允许在新版本的matplotlib 上导入带有GTKAgg 后端的pyplot,或者至少尝试了解此导入失败的原因。

【问题讨论】:

  • 你让你的 virtualenv 看到系统包了吗?
  • 我不确定。我该如何验证呢?不过,我的第一个猜测是,是的,它可以看到。
  • 最后一点,mpl 的 1.1 和 1.2 版本都相当老了。
  • 检查该解决方案是否适合您:stackoverflow.com/questions/42481911/…

标签: python matplotlib gtk pygtk


【解决方案1】:

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

 $ virtualenv ~/.virtualenvs/my_env

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

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

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

(doc) 这将使您的 virtualenv 从您的全局包继承。

【讨论】:

  • 把它吹走,做一个新的。
  • 这需要我几个小时。我那里有很多包,而且很多都不容易安装。
  • 大多数软件包(至少在科学堆栈中)使用python setup.py install 安装。如果您不需要特定版本的东西,您可以使用系统级打包安装,这将为您节省大量时间。
  • 这个建议效果很好,除了我必须使用“pip install --ignore-installed matplotlib ipython[notebook]”以避免写入系统路径。
【解决方案2】:

我不确定你是否在 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 对我不起作用。

【讨论】:

    猜你喜欢
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    相关资源
    最近更新 更多