首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让cairosvg在windows中工作

让cairosvg在windows中工作
EN

Stack Overflow用户
提问于 2017-09-17 15:18:13
回答 4查看 8.4K关注 0票数 7

试图让这段代码正常工作:

代码语言:javascript
复制
import cairosvg
import os

path = "D:/PyProjects/Bla/Temp"
os.chdir(path)

cairosvg.svg2pdf(url='Pic.svg', write_to='image.pdf')

但是得到类似于这个帖子的错误

代码语言:javascript
复制
Traceback (most recent call last):
  File "D:/work/lean_python/pdf/other.py", line 2, in <module>
    import cairosvg
  File "D:\env_python352\lib\site-packages\cairosvg\__init__.py", line 29, in <module>
    from . import surface
  File "D:\env_python352\lib\site-packages\cairosvg\surface.py", line 24, in <module>
    import cairocffi as cairo
  File "D:\env_python352\lib\site-packages\cairocffi\__init__.py", line 46, in <module>
    cairo = dlopen(ffi, 'cairo', 'cairo-2')
  File "D:\env_python352\lib\site-packages\cairocffi\__init__.py", line 43, in dlopen
    raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names))
OSError: dlopen() failed to load a library: cairo / cairo-2

这篇文章提到:

代码语言:javascript
复制
CairoSVG (the python library and bindings) needs Cairo (The C library, part of GTK+) to run. It appears you don't have it an it's headers installed on your system.

因此,我按照步骤1-5描述了这里.现在,我在以下文件中有了开罗头文件:

代码语言:javascript
复制
C:\msys64\mingw64\include\cairo

我还安装了另一个消息来源推荐的pycairo:

代码语言:javascript
复制
pip install pycairo-1.15.2-cp36-cp36m-win_amd64.whl

我仍然会发现上面的错误。有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-09-17 17:48:40

我只是不让cairosvg工作。我找到了一种使用svglib包将svg转换为png的替代方法。

代码语言:javascript
复制
from svglib.svglib import svg2rlg
from reportlab.graphics import renderPDF, renderPM
import os

path = "D:/Bla/Temp"
os.chdir(path)

drawing = svg2rlg("Pic.svg")
renderPM.drawToFile(drawing, "Pic.png")
票数 5
EN

Stack Overflow用户

发布于 2020-02-14 06:03:30

以下解决方法适用于我:

  • 安装cairosvg (python -m pip install cairosvg)
  • 在脚本中运行import cairosvg
  • 如果成功了,你就准备好了。否则(OSError: no library called "cairo" was found):
  • 获取libcairo-2.dll 的副本

  • 假设路径是C:\path\cairo\dlls\libcairo-2.dll
  • 在脚本中添加到顶部(导入cairosvg之前)

import os os.environ['path'] += r';C:\path\cairo\dlls'

  • import cairosvg现在应该成功并工作了。

(假设您正在运行64位版本的Python,否则使用win32_headless.msi)

票数 9
EN

Stack Overflow用户

发布于 2018-07-31 05:38:35

请检查libcairo-2.dll的路径和ctypes.util

在我的例子中,它是一个名为Graphviz的旧软件目录。

代码语言:javascript
复制
python
>>> import ctypes.util
>>> path = ctypes.util.find_library('libcairo-2')
>>> print(path)
C:\Program Files (x86)\Graphviz 2.28\bin\libcairo-2.dll

卸载Graphviz之后。

代码语言:javascript
复制
python
>>> import ctypes.util
>>> path = ctypes.util.find_library('libcairo-2')
>>> print(path)
C:\msys64\mingw64\bin\libcairo-2.dll
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46265677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档