PyPi Ghostscript 0.7运行报错:'Ghostscript'对象无'_instance'属性怎么解决
报错原因
- 参数存在冲突:你传入的配置中
-dPDFSETTINGS同时指定了/prepress和/printer两个互斥值,会导致Ghostscript实例初始化失败,底层没有生成_instance属性,后续销毁实例时就会触发属性不存在的报错。 - 依赖版本兼容问题:PyPi Ghostscript 0.7版本的析构逻辑和Python 3.8存在兼容性问题,即使实例初始化成功,手动执行
del gs销毁对象时也有概率触发该报错。
解决方案
1. 修正参数冲突
根据你的实际需求保留一个-dPDFSETTINGS配置即可:
- 如需输出高质量印刷级PDF,保留
-dPDFSETTINGS=/prepress - 如需输出普通打印用PDF,保留
-dPDFSETTINGS=/printer
修正后的参数示例:
import os ar = [ "-sDEVICE=pdfwrite", "-dPDFSETTINGS=/prepress", "-dQUIET", "-dBATCH", "-dNOPAUSE", "-sOutputFile=" + os.path.join(filepath, file), os.path.join(filepath, file) ]
2. 替换实例销毁逻辑
不要手动执行del gs销毁对象,改用Ghostscript库自带的清理方法规避析构bug:
gs = ghostscript.Ghostscript(*ar) # 替换原有del gs代码 ghostscript.cleanup()
3. 兼容版本替换
如果上述操作后问题仍存在,直接执行命令pip install ghostscript==0.6降级依赖版本,Ghostscript 0.6和Python 3.8的兼容性经过验证,不存在该析构逻辑bug。
内容的提问来源于stack exchange,提问作者Martin Thomsen
相关产品推荐
相关产品推荐

