【问题标题】:rsvg with Python 3.2 on Ubuntu在 Ubuntu 上使用 Python 3.2 的 rsvg
【发布时间】:2012-05-10 17:49:10
【问题描述】:

我正在尝试在 Python 3.2 中使用 rsvg,但我不断收到导入错误。我已经安装了所有的 librsvg 包和 cairo。我在网上找不到任何关于要安装什么才能让它工作的东西。我确实听说 rsvg 模块自 2005 年以来没有更新,所以它只是与 Python 3.2 不兼容,还是我可以尝试安装其他东西?或者,如果 rsvg 不起作用,是否有人对通过 Python 显示 SVG 文件的简单方法有任何建议(基本上只是显示图像)?

编辑:我得到的错误是:'ImportError: No module named rsvg'

此错误在 python2 中不显示

提前致谢

【问题讨论】:

  • 您遇到什么错误?您可以将其添加到您的问题中吗?
  • 我认为 PyQt 应该能够显示 SVG 图像。它适用于 Python 3 - 查找包 python3-pyqt4
  • 您可以通过ctypes 包装它,请参阅stackoverflow.com/a/14943090/1832154。我必须安装大量的包才能获得它的 python 绑定,所以我只在很少需要的时候使用ctypes

标签: python svg python-3.x cairo rsvg


【解决方案1】:

我在试图弄清楚如何做到这一点时遇到了很多困难。我希望其他人找到这个答案并为自己节省很多时间!

对于 Python 3,最初用 C 编写的几个库(包括 GTKClutterlibrsvg)的 Python 语言绑定已被 GObject introspection 库替换,Python 代码从 C 动态生成 Python 对象“对象”。

为了在 Python 3 上使用 librsvg,首先安装必要的 GObject 自省库(除了 Python 3 Cairo 库)。例如,在 Ubuntu 13.10 上:

sudo apt-get install gir1.2-rsvg-2.0 python3-cairo python-gi-cairo python3-gi

然后用下面的代码测试一下。

#!/usr/bin/env python3                                                          

# `gi.repository` is a special Python package that dynamically generates objects
import gi
gi.require_version('Rsvg', '2.0')
from gi.repository import Rsvg
import cairo

INPUTFILE = 'tiger.svg'

if __name__ == '__main__':
    # create the cairo context                                                  
    surface = cairo.SVGSurface('myoutput.svg', 580, 530)
    context = cairo.Context(surface)

    # use rsvg to render the cairo context                                      
    handle = Rsvg.Handle()
    svg = handle.new_from_file(INPUTFILE)
    svg.render_cairo(context)

为了在您的项目中实现这一点,

  1. cairo.SVGSurface 更改为您要绘制的任何表面,然后
  2. INPUTFILE 的值修改为您要渲染的SVG 文件的名称。

【讨论】:

  • 还有sudo apt-get install python3-gi,在Python中:from gi import require_versionrequire_version('Rsvg', '2.0')from gi.repository import Rsvg之前。
  • 在 Ubuntu 18 上,即使安装了所有这些软件包,我也会收到错误消息,ModuleNotFoundError: No module named 'gi'
猜你喜欢
  • 2010-10-21
  • 2012-07-29
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多