我试图在Python3.2中使用rsvg,但是我一直收到一个导入错误。我已经安装了与cairo一起的所有librsvg包。我在网上找不到任何关于要安装什么来让它工作的东西。我确实听说rsvg模块自2005年以来就没有更新过,所以它只是与Python3.2不兼容,还是我可以尝试安装它?或者,如果rsvg不起作用,是否有人对通过Python显示SVG文件的简单方法有任何建议(基本上只是显示图像)?
编辑:我得到的错误是:'ImportError:没有名为rsvg的模块‘
此错误不显示在python2中。
提前感谢
发布于 2013-11-02 16:27:44
我遇到了很多困难,试图找出如何做到这一点。我希望其他人能找到这个答案,并为自己节省很多时间!
对于Python3,最初用C编写的几个库(包括GTK、杂波和图书馆员)的Python语言绑定已经被GObject内省库所取代,后者是从C“对象”动态生成Python对象的Python代码。
为了在Python3上使用librsvg,首先安装必要的GObject内省库(除了Python3cair库)。例如,在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)为了在项目中实现这一点,
cairo.SVGSurface更改为您要绘制的任何表面,以及INPUTFILE的值修改为您希望呈现的SVG文件的名称。https://stackoverflow.com/questions/10393675
复制相似问题