【发布时间】:2014-01-24 11:24:36
【问题描述】:
我有一个在 Linux 上运行良好的 python 脚本,可以使用 Cairo 和 GTK 操作 SVG 文件。 在 Linux 上,我包含了这个库:
#import rsvg
我可以走了。在 Windows 上,它有点复杂。我找到了这个页面:http://cairographics.org/cairo_rsvg_and_python_in_windows/ 这建议使用给定的代码连接到 Windows 上的 GTK dll。这似乎可行,但 glib 正在报告我无法处理的错误,具体来说:
GLib-WARNING **: GError 设置在先前 GError 或未初始化内存的顶部。 这表明某人的代码中存在错误。在设置错误之前,您必须确保错误为 NULL。 覆盖错误消息是:打开文件时出错:没有这样的文件或目录
运行此代码时:
svg_file_name = "c:/test.svg" #also tried "c:\\test.svg" and "file:///c:/test.svg"
handler = rsvg.Handle(svg_file_name)
dim = handler.get_dimension_data()
我不确定它到底在说什么文件,因为我似乎无法从 glib 中获得任何错误细节。我已经尝试了有问题的 SVG 文件名的所有排列。我假设它在抱怨那个文件,但它可能是 GTK 内部的东西,我不知道。
我已经尝试连接到 glib 的 DLL 并运行 g_clear_error(0) 以清除错误消息所涉及的错误堆栈,但根据 glib 错误报告的文档 (https://developer.gnome.org/glib/2.37/glib-Error-Reporting.html#g-clear-error) 我需要一个句柄如果我要对它做任何事情,那么导致问题的代码中的错误对象 - 在 python 中,我不确定我是如何得到它的。
欢迎任何关于 GTK 错误报告和从 python 清除的提示。如果做不到这一点,如果有人可以建议一个替代的 SVG 渲染库,它适用于 windows 的 python,我将不胜感激。 我已经尝试过 CairoSVG,它可以在一定程度上工作,但无法渲染渐变,并且似乎不允许对 SVG 数据进行编程操作。
感谢您的宝贵时间
【问题讨论】:
-
最后,我已经在虚拟机上安装了 Ubuntu——这不那么麻烦了。我仍然在再次找到 rsvg 模块时遇到了一些问题,所以如果其他任何人在让它工作时遇到问题,请从 debian 命令行尝试以下操作:'sudo apt-get install python-rsvg'
标签: python linux windows svg gtk