Matplotlib后端GTK3 Agg使用Cairo吗?

1 投票
2 回答
7452 浏览
提问于 2025-04-18 15:38

我不明白为什么我在尝试使用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

撰写回答