MacOS Ventura下Homebrew安装WeasyPrint后Python模块缺失求助
解决Homebrew安装的WeasyPrint无法被Python3.11加载的问题
问题根源
Homebrew安装的WeasyPrint默认绑定了Python3.12(从你提供的路径/usr/local/Cellar/weasyprint/60.1_1/libexec/lib/python3.12/site-packages/weasyprint可看出),而你使用的是Python3.11——两个版本的Python模块目录完全独立,因此3.11无法找到WeasyPrint模块;手动复制文件会遗漏依赖,进而引发fontTools缺失的问题。
解决方案
方案1:使用Homebrew对应的Python版本运行脚本
Homebrew的WeasyPrint在自身的Python3.12环境中已配置好所有依赖,直接用该版本Python执行脚本即可:
- 查找Homebrew的Python3.12路径:
which python3.12 - 用该路径运行你的脚本:
/usr/local/opt/python@3.12/bin/python3 weasytest.py
方案2:给Python3.11单独安装WeasyPrint(推荐)
直接通过pip给你的Python3.11安装WeasyPrint,会自动处理所有依赖,无需手动复制或链接:
python3.11 -m pip install weasyprint
安装完成后,模块会直接出现在Python3.11的site-packages目录中,运行python3 weasytest.py即可正常加载。
方案3:创建符号链接(不推荐)
如果一定要使用Homebrew安装的WeasyPrint,可将其依赖目录中的包链接到Python3.11的模块目录,但因Python版本差异(3.11 vs 3.12)可能引发兼容性问题:
- 遍历WeasyPrint的site-packages目录下的所有包,逐个创建符号链接:
# 链接WeasyPrint模块 ln -s /usr/local/Cellar/weasyprint/60.1_1/libexec/lib/python3.12/site-packages/weasyprint /usr/local/lib/python3.11/site-packages/weasyprint # 链接fontTools依赖 ln -s /usr/local/Cellar/weasyprint/60.1_1/libexec/lib/python3.12/site-packages/fontTools /usr/local/lib/python3.11/site-packages/fontTools # 其他依赖包如cffi、cssselect2、tinycss2等也需要同样处理 - 注意:后续Homebrew更新WeasyPrint或Python时,链接可能失效,需要重新操作。
内容的提问来源于stack exchange,提问作者Lukas Bystricky
相关产品推荐
相关产品推荐

