MacOS Catalina部署Saleor:WeasyPrint找不到gobject-2.0-0依赖
问题分析与解决办法
核心原因
Macport安装的gobject-2.0.0依赖与当前Python环境的路径不匹配,加上MacOS Catalina的系统框架限制,导致WeasyPrint无法正确识别依赖库。
1. 切换到Macport官方Python环境
如果当前使用的不是Macport安装的Python,肯定找不到Macport下的依赖:
- 执行
which python3,若输出不是/opt/local/bin/python3,执行切换命令(以Python3.9为例):port select --set python3 python39 - 重启终端后再次验证
which python3,确保路径正确。
2. 配置环境变量关联Macport库路径
Catalina对DYLD_LIBRARY_PATH有严格限制,需手动指定Macport的库路径:
- 临时测试:终端执行以下命令后启动Django服务器:
export DYLD_LIBRARY_PATH=/opt/local/lib:$DYLD_LIBRARY_PATH - 永久生效:将上述命令添加到
~/.zshrc(或~/.bash_profile,取决于你用的shell),然后执行source ~/.zshrc刷新配置。
3. 重新安装WeasyPrint到Macport Python环境
确保WeasyPrint安装在正确的Python环境中:
- 先卸载现有版本:
pip3 uninstall weasyprint - 使用Macport的pip重新安装:
/opt/local/bin/pip3 install weasyprint - 若安装时提示gobject相关依赖缺失,补装Macport的gobject开发包:
port install py39-gobject3 # 替换为你的Python版本,如py38-gobject3
4. 验证WeasyPrint依赖加载
运行以下命令检查gobject是否被正确识别:
python3 -c "import weasyprint; from weasyprint.document import HTML; print('依赖加载成功')"
若报错,执行以下命令补装gobject-introspection组件:
port install gobject-introspection
5. 手动注入路径到项目(极端方案)
如果以上步骤都无效,在项目的utils.py开头添加以下代码,强制指定依赖路径:
import sys import os # 替换为你的Macport Python site-packages路径 sys.path.append('/opt/local/lib/python3.9/site-packages') os.environ['DYLD_LIBRARY_PATH'] = '/opt/local/lib:' + os.environ.get('DYLD_LIBRARY_PATH', '')
内容的提问来源于stack exchange,提问作者Romeo
相关产品推荐
相关产品推荐

