Bac*_*ach 7 python gtk pygtk matplotlib
从一个虚拟环境中,试图加载它使用的脚本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.
Run Code Online (Sandbox Code Playgroud)
我为了生成代码而运行的代码ImportError如下:
import matplotlib as mpl
mpl.use('GTKAgg')
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)
在停用我的虚拟环境后运行相同的代码时,一切顺利.
我认为这可能是由于版本差异造成的; 实际上,我的机器上存在这种差异.但是,虚拟环境中的版本更新(1.2.0对1.1.1rc),所以我不期望得到更少的支持.
如果不清楚:我的问题是如何允许pyplot使用GTKAgg后端导入新版本matplotlib,或者至少尝试了解导入失败的原因.
你可能通过以下方式创建了你的虚拟evn:
$ virtualenv ~/.virtualenvs/my_env
Run Code Online (Sandbox Code Playgroud)
默认情况下,这可以看不到你的系统安装的软件包(包括pygtk)所以当你尝试运行mpl时,它会正确地抱怨你没有安装pygtk,因为(在virtualenv的上下文中)你没有.
您可以在virtualenv中构建和安装pygtk,也可以使用
$ virtualenv --system-site-packages ~/.virtualenvs/my_env
Run Code Online (Sandbox Code Playgroud)
(doc)这将使你的virtualenv继承你的全局包.