Matplotlib后端GTK3 Agg使用Cairo吗?
我不明白为什么我在尝试使用Gtk3Agg这个后端的时候,会出现一个错误,提示找不到cairo模块。
** (simple_plot_in_gtk3.py:312517): WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files Traceback (most recent call last): File "simple_plot_in_gtk3.py", line 5, in from matplotlib.backends.backend_gtk3agg import FigureCanvasGTK3Agg as FigureCanvas File "/Produits/publics/x86_64.Linux.RH6/python/3.4.1/lib/python3.4/site-packages/matplotlib-1.3.1-py3.4-linux-x86_64.egg/matplotlib/backends/backend_gtk3agg.py", line 1, in import cairo ImportError: No module named 'cairo'
我正在尝试运行来自matplotlib网站的matplotlib/GTK3示例。
2 个回答
0
如果你查看一下 backend_gtk3agg.py
文件,你会发现文件的前几行是这样的:
import cairo
import numpy as np
import sys
import warnings
import backend_agg
import backend_gtk3
from matplotlib.figure import Figure
from matplotlib import transforms
所以,没错,gtk3agg 后端需要用到 cairo 库 以及它的 Python 绑定。还有 numpy。
它使用 Cairo 来处理图像缓冲区,因为 AGG 并不提供 这个功能。我不太清楚 gtk3agg 的开发者为什么选择这种方法,可能是因为这样比较方便吧。
2
安装 Python的Cairo库 是可行的:
$ pip install pycairo