我在 OSX EL CAPITAN 上全新安装 weasyprint 时也遇到了同样的问题。
我就是这样解决的。
首先,cairo 通过 pip 安装时没有找到,所以我尝试使用以下命令通过 homebrew 安装它
brew install cairo pango gdk-pixbuf libxml2 libxslt libffi
完成后,我试图找出cairo 的安装路径。就我而言,位置是 /usr/local/homebrew/Cellar/cairo/1.14.6_1/lib/ 我刚刚将其导出到我的 DYLD 库路径
export DYLD_LIBRARY_PATH=/usr/local/homebrew/Cellar/cairo/1.14.6_1/lib/
然后我再次卸载并安装weasyprint
pip uninstall weasyprint
pip install weasyprint
发布后,我尝试运行weasyprint,但出现新错误
Traceback (most recent call last):
File "/Users/anurag/VirtualEnvs/test/bin/weasyprint", line 11, in <module>
load_entry_point('WeasyPrint==0.31', 'console_scripts', 'weasyprint')()
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/pkg_resources/__init__.py", line 565, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2598, in load_entry_point
return ep.load()
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2258, in load
return self.resolve()
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2264, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/__init__.py", line 338, in <module>
from .css import PARSER, preprocess_stylesheet # noqa
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/css/__init__.py", line 30, in <module>
from . import computed_values
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/css/computed_values.py", line 18, in <module>
from .. import text
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/text.py", line 216, in <module>
'libgobject-2.0.dylib')
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/text.py", line 212, in dlopen
return ffi.dlopen(names[0]) # pragma: no cover
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/cffi/api.py", line 139, in dlopen
lib, function_cache = _make_ffi_library(self, name, flags)
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/cffi/api.py", line 770, in _make_ffi_library
backendlib = _load_backend_lib(backend, libname, flags)
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/cffi/api.py", line 759, in _load_backend_lib
return backend.load_library(name, flags)
OSError: cannot load library gobject-2.0: dlopen(gobject-2.0, 2): image not found
我试图找出object 库的位置。在/opt/local/lib找到并设置回退库路径
export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib
之后,我再次尝试运行weasyprint,它成功了
(test)anurag-mac:~ anurag$ weasyprint --version
WeasyPrint version 0.31
我希望其他人也觉得它有用。
UPDATE-1
虽然上述方法有效,但 MySQL python 开始报错,culprit 正在定义一个备用库路径。所以我删除了这一行
export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib
这又给了我gobject 错误,然后我尝试找到它的安装位置并附加到DYLD_LIBRARY_PATH
export DYLD_LIBRARY_PATH=/usr/local/homebrew/Cellar/cairo/1.14.6_1/lib/:/usr/local/homebrew/Cellar/glib/2.48.2/lib/
这样做之后,pango 出现了类似的错误。纠正所有错误后,这是最终起作用的库路径
export DYLD_LIBRARY_PATH=/usr/local/homebrew/Cellar/cairo/1.14.6_1/lib/:/usr/local/homebrew/Cellar/glib/2.48.2/lib/:/usr/local/homebrew/Cellar/pango/1.40.3/lib/