Python: OSError: cannot load library libcairo.so.2
Python: OSError: cannot load library libcairo.so.2
我在 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
我不知道还有什么其他信息可以帮助解决这个问题,但请让我知道,我会尝试添加。
cairo 似乎依赖于一个不在标准搜索库中的共享库,但是,python 正在调用 dlopen 动态加载库,因此您可以尝试将 libcairo.so。 2(如果是 link,则确保引用位于工作目录中的同一文件夹中)。您也可以尝试 pkg-config 来设置环境。看这里http://people.freedesktop.org/~dbn/pkg-config-guide.html
我刚遇到同样的问题 ("OSError: cannot load library libcairo.so.2: error 0x7e"),这就是我在 Windows 上解决问题的方法 (Windows 7 x64,Python 3.4.2 x86(MSC v.1600 32 位)):
- 下载了 all-in-one bundle 的 GTK+ 堆栈,包括第 3 方依赖项(其中包含
libcairo-2.dll
和其他与 Cairo 相关的库)
- 解压缩此存档到不包含空格的路径(例如
C:\Programs\gtk+
)
- 添加解压目录的
bin
子目录(其中包含提到的libcairo-2.dll
和其他必要文件) 到路径
- Win+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)
在 Mac OS X 上使用自制程序:
brew install cairo
brew install pango
在 Windows 10 上解决如下:
-
找到它的安装位置并将其dll子目录添加到系统路径中。
关闭并重新打开命令 window 以获取更新后的路径。
我刚刚通过 Anaconda Python 安装和 cairosvg
:
在 Mac OSX 10.13 上解决了这个问题
$ conda install cairo pango gdk-pixbuf libffi cairosvg
$ cairosvg image.svg -o image.png
我的想法来自 https://cairosvg.org/documentation/, which says that all its dependencies can be installed with WeasyPrint. WeasyPrint's documentation for installation on MacOSX at https://weasyprint.readthedocs.io/en/latest/install.html#macos 说要从 HomeBrew 获取依赖项:
brew install python3 cairo pango gdk-pixbuf libffi
所以我用 conda
试了一下,效果很好。
我在 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
我不知道还有什么其他信息可以帮助解决这个问题,但请让我知道,我会尝试添加。
cairo 似乎依赖于一个不在标准搜索库中的共享库,但是,python 正在调用 dlopen 动态加载库,因此您可以尝试将 libcairo.so。 2(如果是 link,则确保引用位于工作目录中的同一文件夹中)。您也可以尝试 pkg-config 来设置环境。看这里http://people.freedesktop.org/~dbn/pkg-config-guide.html
我刚遇到同样的问题 ("OSError: cannot load library libcairo.so.2: error 0x7e"),这就是我在 Windows 上解决问题的方法 (Windows 7 x64,Python 3.4.2 x86(MSC v.1600 32 位)):
- 下载了 all-in-one bundle 的 GTK+ 堆栈,包括第 3 方依赖项(其中包含
libcairo-2.dll
和其他与 Cairo 相关的库) - 解压缩此存档到不包含空格的路径(例如
C:\Programs\gtk+
) - 添加解压目录的
bin
子目录(其中包含提到的libcairo-2.dll
和其他必要文件) 到路径- Win+R,
SystemPropertiesAdvanced
- 环境变量...
- 将此目录添加到 Path 变量(用户变量或系统变量,分号后)(例如
...;C:\foo;C:\Programs\gtk+
) - 好的
- Win+R,
pip install cairosvg
- 用一个非常简单的代码对其进行了测试,它已经起作用了:
import cairosvg
testsvg = '<svg height="30" width="30">\
<text y="10">123</text>\
</svg>'
svgConvertedToPng = cairosvg.svg2png(bytestring=testsvg)
print(svgConvertedToPng)
在 Mac OS X 上使用自制程序:
brew install cairo
brew install pango
在 Windows 10 上解决如下:
找到它的安装位置并将其dll子目录添加到系统路径中。
关闭并重新打开命令 window 以获取更新后的路径。
我刚刚通过 Anaconda Python 安装和 cairosvg
:
$ conda install cairo pango gdk-pixbuf libffi cairosvg
$ cairosvg image.svg -o image.png
我的想法来自 https://cairosvg.org/documentation/, which says that all its dependencies can be installed with WeasyPrint. WeasyPrint's documentation for installation on MacOSX at https://weasyprint.readthedocs.io/en/latest/install.html#macos 说要从 HomeBrew 获取依赖项:
brew install python3 cairo pango gdk-pixbuf libffi
所以我用 conda
试了一下,效果很好。