M1 Monterey系统Camelot-py报GhostscriptNotFound错误咨询
M1芯片macOS Monterey下Camelot-py报GhostscriptNotFound错误修复方案
核心原因
M1系列芯片Mac的Homebrew默认安装前缀为/opt/homebrew,对应Ghostscript可执行文件默认路径为/opt/homebrew/bin/gs;Intel架构Mac的Homebrew默认前缀为/usr/local,Camelot-py旧版本的Ghostscript检测逻辑仅覆盖Intel架构默认路径,未适配M1路径规则。
同时macOS下从GUI启动的Python进程(含VS Code、PyCharm等IDE直接启动的解释器、官网pkg安装的Python)不会加载shell配置文件中export设置的PATH变量,即使终端内可正常执行gs命令,Python运行时也无法检索到Ghostscript可执行文件。
实操修复步骤
- 确认本地Ghostscript实际安装路径
终端执行命令获取gs可执行文件全路径:
正常Homebrew安装的M1设备会返回which gs/opt/homebrew/bin/gs,记录该路径备用。- 确认本地Ghostscript实际安装路径
- 脚本级永久修复(无系统配置改动,全场景生效)
在你的PDF解析脚本最顶部、导入camelot之前,手动将gs所在目录加入Python进程的环境变量,示例代码:
该方法不依赖全局环境变量配置,终端、IDE运行脚本均生效,无需修改系统或第三方库源码。import os # 若which gs返回其他路径,替换下方路径为实际gs所在目录即可 os.environ["PATH"] += os.pathsep + "/opt/homebrew/bin" # 再导入camelot执行后续解析逻辑 import camelot tables = camelot.read_pdf("your_file.pdf")- 脚本级永久修复(无系统配置改动,全场景生效)
- 依赖补全与版本升级
先执行命令升级Camelot-py并补全Python侧Ghostscript绑定,旧版本Camelot-py无M1路径适配逻辑:
注意不要使用conda源安装Camelot-py,conda渠道的包版本迭代滞后,M1适配存在已知问题。pip install --upgrade camelot-py ghostscript- 依赖补全与版本升级
- 极端场景兜底修复
若上述操作后仍触发报错,可直接修改Camelot-py源码跳过路径检测:
找到本地Python环境下Camelot安装目录内的utils.py文件,通常路径为/opt/homebrew/lib/python3.x/site-packages/camelot/utils.py(x替换为本地Python的小版本号),定位到Ghostscript检测逻辑段,直接将gs变量赋值为第一步获取的gs全路径:
保存修改后即可正常调用解析功能。# 注释原有的路径检索逻辑,直接写死路径 gs = "/opt/homebrew/bin/gs"- 极端场景兜底修复
有效性验证
修复完成后可在Python环境执行以下代码,返回libgs动态库路径而非None即为配置生效:
import os os.environ["PATH"] += os.pathsep + "/opt/homebrew/bin" from ctypes.util import find_library print(find_library("gs"))
内容的提问来源于stack exchange,提问作者Vladimir Pakhomov
相关产品推荐
相关产品推荐

