Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Gtk*后端需要安装pygtk_Python_Matplotlib_Gtk_Pygtk - Fatal编程技术网

Python Gtk*后端需要安装pygtk

Python Gtk*后端需要安装pygtk,python,matplotlib,gtk,pygtk,Python,Matplotlib,Gtk,Pygtk,在虚拟环境中,尝试加载使用matplotlib的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&g

在虚拟环境中,尝试加载使用
matplotlib
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.
在停用虚拟环境后运行相同的代码时,一切都很顺利

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


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

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

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

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

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

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

我不确定您是否在Ubuntu上,但要解决这个问题,我必须从源代码安装matplotlib才能使其正常工作。主要说明(来自)如下:


更改后端和使用--系统站点包对我不起作用。

你让你的virtualenv看到系统包了吗?我不确定。我怎样才能证实这一点?然而,我的第一个猜测是,是的,它可以看到。最后一点,mpl的1.1和1.2版本都很旧。检查一下这个解决方案是否适合你:把它吹走,再做一个新的。这将花费我几个小时。我有这么多的软件包,其中有很多不容易安装。大多数软件包(至少在科学堆栈中)是使用
python setup.py install安装的。如果您不需要特定版本的东西,可以使用系统级打包安装,这将为您节省大量时间。此建议效果很好,只是为了避免写入系统路径,我不得不使用“pip安装--忽略已安装的matplotlib ipython[笔记本]”。
$ virtualenv --system-site-packages ~/.virtualenvs/my_env
$ workon plotting
$ pip uninstall matplotlib
$ git clone https://github.com/matplotlib/matplotlib.git
$ cd matplotlib
$ python setup.py install