【发布时间】:2020-06-04 03:16:54
【问题描述】:
尝试在 Django 中运行网站时遇到问题:
OSError: no library called "libcairo-2" was found
cannot load library 'libcairo.so.2': /lib/x86_64-linux-gnu/libfontconfig.so.1: undefined symbol: FT_Done_MM_Var
cannot load library 'libcairo.so': /lib/x86_64-linux-gnu/libfontconfig.so.1: undefined symbol: FT_Done_MM_Var
cannot load library 'libcairo.2.dylib': libcairo.2.dylib: cannot open shared object file: No such file or directory
cannot load library 'libcairo-2.dll': libcairo-2.dll: cannot open shared object file: No such file or directory
虽然安装了包。
我已经安装了 weasyprint
pip3 install weasyprint
python -m pip install WeasyPrint
sudo apt-get install build-essential python3-dev python3-pip python3-setuptools python3-wheel python3-cffi libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-info
我也试过
sudo apt install libcairo2-dev
sudo apt install libgirepository1.0-dev
我有 Lubuntu 系统。 有什么想法可以解决吗?提前致谢
【问题讨论】:
-
您是否安装了文档中提到的所有内容:weasyprint.readthedocs.io/en/stable/install.html#debian-ubuntu
-
是的,我做到了(如果他们写的推荐安装了所有必要的软件包)
-
在安装 libcairo 后尝试卸载并安装 weasyprint。此外,
undefined symbol: FT_Done_MM_Var错误可能表明与freetype包有冲突 - 是否安装了自定义 freetype-xxx? -
您的 fontconfig 是针对新版本的 freetype 构建的,但不知何故最终加载了旧版本的 freetype,因此是未定义的版本。要么,在某个地方还有另一个
libfreetype.so,要么你用旧版本替换了你的/usr/lib/x86_64-linux-gnu/libfreetype.so,一切都坏了。 -
运行
nm -DS /usr/lib/x86_64-linux-gnu/*freetype.so | grep FT_Done可以告诉你那里是否有FT_Done_MM_Var函数。 (还有其他以FT_Done开头的函数 - 这只是为了确保一切正常工作,例如,您应该始终在输出中看到FT_Done_Face。)
标签: python django cairo weasyprint