Python:OSError:无法加载库 libcairo.so.2

问题描述 投票:0回答:7

我在 Windows 7 平台上运行 python 脚本时遇到一些问题。我已经安装了 Python 和 cairo,最后一个使用“pip”。我正在使用以下命令运行脚本:

C:\Python34>python.exe label/make_label.py

我收到以下错误消息:

Traceback (most recent call last):
  File "label/make_label.py", line 6, in <module>
    import cairocffi as cairo
  File "C:\Python34\lib\site-packages\cairocffi\__init__.py", line 41, in <modul
e>
    cairo = dlopen(ffi, *CAIRO_NAMES)
  File "C:\Python34\lib\site-packages\cairocffi\__init__.py", line 34, in dlopen

    return ffi.dlopen(names[0])  # pragma: no cover
  File "C:\Python34\lib\site-packages\cffi\api.py", line 118, in dlopen
    lib, function_cache = _make_ffi_library(self, name, flags)
  File "C:\Python34\lib\site-packages\cffi\api.py", line 411, in _make_ffi_libra
ry
    backendlib = _load_backend_lib(backend, libname, flags)
  File "C:\Python34\lib\site-packages\cffi\api.py", line 400, in _load_backend_l
ib
    return backend.load_library(name, flags)
OSError: cannot load library libcairo.so.2: error 0x7e

我已经做了以下事情:

  • 环境变量中添加了GTK/bin的PATH
  • 我检查文件夹 GTK/bin 并发现“libcairo-2.dll”,所以我将其重命名为 libcairo.so

我不知道还有哪些其他信息可用于解决此问题,但请告诉我,我会尝试添加它。

python windows cairo
7个回答
41
投票

在 Mac OS X 上使用自制软件:

brew install cairo
brew install pango

9
投票

我刚刚在 Mac OSX 10.13 上使用 Anaconda Python 安装修复了这个问题,并且

cairosvg
:

$ conda install cairo pango gdk-pixbuf libffi cairosvg
$ cairosvg image.svg -o image.png

我从https://cairosvg.org/documentation/得到了这个想法,它说它的所有依赖项都可以用WeasyPrint安装。 WeasyPrint 在 MacOSX 上的安装文档https://weasyprint.readthedocs.io/en/latest/install.html#macos 表示从 HomeBrew 获取依赖项:

brew install python3 cairo pango gdk-pixbuf libffi

所以我用

conda
尝试了一下,效果很好。


5
投票

看来 cairo 依赖于一个不在标准搜索库中的共享库,但是,python 正在调用 dlopen 来动态加载该库,因此您可以尝试放置 libcairo.so.2(如果是链接,则确保该引用位于工作目录中的同一文件夹中。您也可以尝试 pkg-config 来设置环境。请参阅此处 http://people.freedesktop.org/~dbn/pkg-config-guide.html


5
投票

我刚刚遇到了同样的问题(“OSError:无法加载库libcairo.so.2:错误0x7e”),这就是我在Windows上解决问题的方法(Windows 7 x64,Python 3.4.2 x86( MSC v.1600 32 位)):

  • 下载了 GTK+ 堆栈的一体包,包括第 3 方依赖项(其中包含
    libcairo-2.dll
    和其他开罗相关库)
  • 将此存档提取到不包含空格的路径(例如
    C:\Programs\gtk+
  • 添加提取目录的
    bin
    子目录
    (其中包含提到的
    libcairo-2.dll
    和其他必要文件)到PATH
    • +R
      SystemPropertiesAdvanced
    • 环境变量...
    • 将此目录添加到 Path 变量中(分号后面的用户变量或系统变量)(例如
      ...;C:\foo;C:\Programs\gtk+
    • 好的
  • pip install cairosvg
  • 用一个非常简单的代码对其进行了测试,该代码已经有效:
import cairosvg
testsvg = '<svg height="30" width="30">\
    <text y="10">123</text>\
    </svg>'
svgConvertedToPng = cairosvg.svg2png(bytestring=testsvg)
print(svgConvertedToPng)

4
投票

在 Windows 10 上解决如下:

  1. 下载无头UniConverter安装程序

  2. 找到它的安装位置并将其dll子目录添加到系统路径中。

  3. 关闭并重新打开命令窗口即可获取更新的路径。


2
投票

我在互联网上搜索快速解决方案时发现了针对 MAC OSX 的内容。

使用自制程序安装外部库后:

brew install cairo #and other necessary stuff

库链接

ln -s /opt/homebrew/lib/libcairo.2.dylib .

需要链接lib来运行python代码,它对我有用。


0
投票

64 位 GTK3 安装程序对我有用。

不重要:在此之前,我按照“在 Windows 上安装 cairo”下的 cairocffi 文档中的建议尝试了 32 位 GTK2 安装程序,但这导致了 cannot load library 'C:\Program Files (x86)\GTK2-Runtime\bin\libcairo-2.dll': error 0xc1,然后我发现了

这个 WeasyPrint 问题
(WeasyPrint 显然使用 cairo,并且与 cairocffi 和 CairoSVG 来自同一家公司),这让我找到了文档,它链接到上面链接的 64 位版本。

© www.soinside.com 2019 - 2024. All rights reserved.