在虚拟环境中,尝试加载使用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
后端,或者至少尝试了解其原因这种导入失败。
答案 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对我没有用。