Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu上带Python3.2的rsvg_Python_Svg_Python 3.x_Cairo_Rsvg - Fatal编程技术网

Ubuntu上带Python3.2的rsvg

Ubuntu上带Python3.2的rsvg,python,svg,python-3.x,cairo,rsvg,Python,Svg,Python 3.x,Cairo,Rsvg,我试图在Python3.2中使用rsvg,但我一直收到一个导入错误。我已经安装了所有librsvg包以及cairo。我在网上找不到任何关于如何安装以使其工作的信息。我听说rsvg模块自2005年以来就没有更新过,所以它是不是与Python3.2不兼容,或者我可以尝试安装它?或者,如果rsvg不起作用,是否有人对通过Python显示SVG文件的简单方法有任何建议(基本上只是显示图像) 编辑:我得到的错误是:“ImportError:没有名为rsvg的模块” python2中不显示此错误 提前感谢我

我试图在Python3.2中使用rsvg,但我一直收到一个导入错误。我已经安装了所有librsvg包以及cairo。我在网上找不到任何关于如何安装以使其工作的信息。我听说rsvg模块自2005年以来就没有更新过,所以它是不是与Python3.2不兼容,或者我可以尝试安装它?或者,如果rsvg不起作用,是否有人对通过Python显示SVG文件的简单方法有任何建议(基本上只是显示图像)

编辑:我得到的错误是:“ImportError:没有名为rsvg的模块”

python2中不显示此错误


提前感谢

我在想办法做这件事时遇到了很多困难。我希望其他人能找到这个答案,为自己节省很多时间

对于Python3,最初用C编写的几个库(包括和)的Python语言绑定已被库所取代,这些库是从C“对象”动态生成Python对象的Python代码

为了在Python3上使用
librsvg
,首先安装必要的GObject内省库(除了Python3 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)
为了在您的项目中实现这一点

  • 将cairo.SVGSurface更改为要绘制的任何曲面,然后
  • INPUTFILE
    的值修改为要呈现的SVG文件的名称

  • 你犯了什么错误?你能把它添加到你的问题中吗?我认为PyQt应该能够显示SVG图像。它与python3一起工作-查找包
    python3-pyqt4
    。您可以通过
    ctypes
    来包装它,请参阅。为了获得python绑定,我必须安装大量的软件包,所以在我很少需要的时候我只使用
    ctypes
    。另外
    sudo apt get install python3 gi
    ,在python中:
    来自gi import require\u version
    require\u version('Rsvg',2.0'))
    在从gi.repository导入Rsvg之前。在Ubuntu18上,即使安装了所有这些软件包,我也会收到错误,
    ModuleNotFoundError:没有名为“gi”的模块。