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

时间:2015-01-29 09:44:19

标签: python cairo

我在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

我已经完成的工作如下:

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

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

5 个答案:

答案 0 :(得分:3)

在Mac OS X上使用自制程序:

brew install cairo
brew install pango

答案 1 :(得分:2)

似乎cairo依赖于一个不在标准搜索库中的共享库,但是,python正在调用dlopen来动态加载库,所以你可以尝试把libcairo.so.2(如果它是一个链接,那么确保引用位于工作目录中的同一文件夹中。您也可以尝试使用pkg-config来设置环境。见http://people.freedesktop.org/~dbn/pkg-config-guide.html

答案 2 :(得分:1)

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

  • 下载了App Links spec defines it GTK + 堆栈,包括第三方依赖项(包含libcairo-2.dll和其他与Cairo相关的库)
  • 将此存档解压缩到不包含空格的路径(例如C:\Programs\gtk+
  • 将解压缩目录的 bin子目录(其中包含上述libcairo-2.dll及其他必要文件)添加到路径
    • + 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)

答案 3 :(得分:1)

在Windows 10上解决如下:

  1. 下载headless UniConverter installer

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

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

答案 4 :(得分:0)

我刚刚在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的安装在Mac OS X上的文档https://weasyprint.readthedocs.io/en/latest/install.html#macos表示要从HomeBrew获取依赖项:

brew install python3 cairo pango gdk-pixbuf libffi

所以我改为使用conda进行了尝试,效果很好。