macOS下如何修复Python/PyCharm中的Ghostscript路径问题?
解决Ghostscript 'gs' 找不到的问题
问题根源
你添加环境变量PATH时犯了一个关键错误:os.environ["PATH"] += ":/opt/homebrew/bin/gs" 中添加的是Ghostscript可执行文件的完整路径,但PATH环境变量需要的是包含该可执行文件的目录路径,而非文件本身。这就是为什么终端能找到gs,但Python代码找不到的原因。
修复方案
方案1:修正PATH设置
将代码开头的PATH修改为添加目录而非具体文件:
import os # 正确添加Ghostscript所在目录到系统PATH os.environ["PATH"] += os.pathsep + "/opt/homebrew/bin"
os.pathsep会自动适配macOS的路径分隔符(:),比硬写分隔符更通用。
方案2:直接给PIL指定Ghostscript路径
如果方案1无效,可以直接告诉PIL的EPS插件Ghostscript的具体位置,在导入PIL相关模块前添加:
from PIL import EpsImagePlugin # 替换为你的Ghostscript可执行文件路径 EpsImagePlugin.gs_windows_binary = "/opt/homebrew/bin/gs"
(注:变量名带windows是历史遗留问题,macOS/Linux同样适用)
额外检查项
- 确认PyCharm使用的Python解释器和终端一致:在PyCharm的运行配置中查看解释器路径,和终端执行
which python的结果对比,避免因虚拟环境或不同解释器导致的PATH差异。
代码优化建议
frame_save函数每次覆盖image.eps,高帧率场景下可能出现文件读写冲突,建议用临时文件:
import tempfile def frame_save(): # 创建临时EPS文件 with tempfile.NamedTemporaryFile(suffix='.eps', delete=False) as tmp_file: win.postscript(file=tmp_file.name, colormode='color') img = NewImage.open(tmp_file.name) images.append(img) # 用完删除临时文件 os.unlink(tmp_file.name)
save_gif的参数len是Python内置函数名,建议重命名为frame_duration,避免命名冲突。
内容的提问来源于stack exchange,提问作者Nathan Gibson
相关产品推荐
相关产品推荐

