Django项目使用WeasyPrint时报错:OSError: cannot load library ‘gobject-2.0-0‘: dlopen(gobject-2.0-0, 0x0002):

1. 场景还原

最近公司开发需求要用到WeasyPrint将发票在后端导出为PDF,安装了WeasyPrint==52.5版本后启动项目报错:OSError: cannot load library 'gobject-2.0-0'

5309ec96768f4d15b3a7bf31871b9bbd.png

设备:Macbook Apple M1 Pro 

以下是M1芯片的错误历程,只需要针对M芯片苹果电脑的解决方法请直接跳到3.解决方法

首先,参考WeasyPring官方文档和搜索stack overflow:Python: OSError: cannot load library libcairo.so.2使用homebrew安装pango和cairo这两个库以及相关的依赖仍然报错。

然后,搜索另一个解决方案stack overflow: gobject-2.0-0 not able to load on macbook设置软链接开始报另一个错:tried: '/usr/local/lib/gobject-2.0-0' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))

d302a8e8b21f4fa6af2d585449ed41ed.png

 

2. 错误原因

根本原因是macOS系统缺少相关依赖,使用homebrew安装pango和cairo这两个库会将对应的依赖都安装上。

安装之后仍然报错是因为M芯片的homebrew安装的软件包的路径默认是/opt/homebrew/opt(M芯片mac),但是weasyprint不知道这个路径,所以需要添加软链接确保能找到对应依赖。

添加软链接还是报错是因为相关依赖不支持M芯片的系统,需要安装Intel芯片(x86_64 架构)的库。

 

3. 解决方案

1. 在 M 系列芯片的 Mac 上安装 Intel 版本的 Homebrew

首先需要在 M 系列芯片的 Mac 上安装 Intel 版本的 Homebrew,以便安装和运行 x86_64 架构的软件。以下是具体的安装步骤:

安装 Rosetta 2

在 M 系列芯片 Mac 上,Rosetta 2 是用于模拟运行 Intel 架构应用的翻译层。可以通过以下命令在终端安装 Rosetta 2(如果已经安装则可忽略此步骤):

softwareupdate --install-rosetta

在 Rosetta 模式下打开终端

要安装 Intel 版本的 Homebrew,需要在 Rosetta 模式下打开终端。可以这样操作:

• 打开访达前往 应用程序 > 实用工具 > 终端

• 右键点击 终端,选择 显示简介

• 在简介窗口中勾选 使用 Rosetta 打开

这样打开的终端将以 x86_64 模式运行,安装完后记得取消勾选,如果你使用iterm2,操作类似

ac53b5fa654d46bf971fb127269c4a9f.png

安装 Intel 版本的 Homebrew

在 Rosetta 模式下的终端输入以下命令,下载并安装 Intel 版本的 Homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

如果下载很慢,可使用以下命令:

arch -x86_64 /bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"

设置 Intel Homebrew 的路径

安装完成后,Intel 版本的 Homebrew 会被安装在 /usr/local 目录下,而 M 系列芯片原生的 Homebrew 默认安装在 /opt/homebrew 下。因此,可以通过设置路径来切换不同架构的 Homebrew。

编辑~/.zshrc

vim ~/.zshrc

添加以下别名,这样就能实现两个版本的homebrew共存:

# intel homebrew
alias ibrew="arch -x86_64 /usr/local/bin/brew"

# arm homebrew
alias brew='arch -arm64 /opt/homebrew/bin/brew'

保存退出后分别运行brew --version和ibrew --version查看是否生效

2. 使用Intel 版本的 Homebrew安装依赖

使用以下命令安装依赖即可解决依赖报错

ibrew install pango libffi

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值