【问题标题】:Matplotlib backend GTK3 Agg using Cairo?Matplotlib 后端 GTK3 Agg 使用 Cairo?
【发布时间】:2014-09-24 17:08:07
【问题描述】:

我不明白为什么当我尝试使用 Gtk3Agg 后端时,我最终得到一个错误,告诉我找不到 cairo 模块。

**(simple_plot_in_gtk3.py:312517):警告**:检索无障碍总线地址时出错:org.freedesktop.DBus.Error.ServiceUnknown:任何.service文件都没有提供名称org.a11y.Bus 回溯(最近一次通话最后): 文件“simple_plot_in_gtk3.py”,第 5 行,在 从 matplotlib.backends.backend_gtk3agg 导入 FigureCanvasGTK3Agg 作为 FigureCanvas 文件“/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”,第 1 行,在 进口开罗 ImportError:没有名为“cairo”的模块

我正在尝试从 matplolib 站点运行 matplotlib/GTK3 example

【问题讨论】:

    标签: python matplotlib gtk3 cairo pycairo


    【解决方案1】:

    安装Python binging for Python 工作:

    $ pip install pycairo
    

    【讨论】:

    • 我尝试安装 pycairo。但它给出了一个错误:无法构建pycairo。错误:无法为使用 PEP 517 且无法直接安装的 pycairo 构建轮子
    • pip3 呢?你为 python3 试过了吗?
    【解决方案2】:

    如果您查看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 library 及其Python bindings。还有 numpy。

    它使用 Cairo 作为 ImageSurface 缓冲区,因为那是 AGG does not provide。我不知道为什么 gtk3agg 开发人员选择了这种方法。大概是因为方便吧。

    【讨论】:

    • 是的,我看到了这一点,这就是重点。 AGG 是一个相当于 Cairo 的渲染库。 Agg 后端应该使用 Agg 而不是 cairo(还有一个 cairo 后端)。
    • AGG 不提供图像缓冲区。查看更新的答案。
    猜你喜欢
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    相关资源
    最近更新 更多