【问题标题】:cannot load library libcairo无法加载库 libcairo
【发布时间】: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


【解决方案1】:

解决方案是从home/user/anaconda3/envs/myvenv/lib 目录中删除libfreetype.so.6 文件(想法取自https://kb.tecplot.com/2019/09/11/undefined-symbol-ft_done_mm_var/

【讨论】:

    【解决方案2】:

    对于任何来到这里的人都会遇到错误:

    /lib/x86_84-linux-gnu/libcairo.so.2: undefined symbol: FT_Done_MM_Var
    

    运行命令:

    sudo find / -name *freetype*
    

    正如 Uli Schlachter 所说,这是因为字体是在较新版本中构建并在较旧版本中使用的。 我使用 alis01 的评论为我找出了这一点:

    /usr/lib/jvm/java-8-openjdk/jre/lib/amd64/libfreetype.so.6
    

    导致了这个问题。我将它重命名为 libfreetype.so.6.bak,从那以后一切都很好。

    【讨论】:

      【解决方案3】:

      对于基于 Ubuntu 20 和 Debian 的发行版,请尝试:

      sudo apt-get install libpangocairo-1.0-0
      

      【讨论】:

      • 为我工作..谢谢..!!!。你能解释一下这个问题吗?
      • @basharpazhedath,真的我没有明显的理由,我们只是安装了一个缺少的包,即 Pango 库(用于文本的布局和渲染,GTK+ 的字体处理)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      • 2018-12-01
      • 2013-06-17
      • 2020-06-10
      • 2012-07-30
      • 2017-01-29
      • 2015-06-08
      相关资源
      最近更新 更多