Ubuntu运行Sherloq报错:无法导入PIL.JpegImagePlugin的convert_dict_qtables
解决Sherloq运行时Pillow库的ImportError问题
问题原因
你遇到的ImportError: cannot import name 'convert_dict_qtables' from 'PIL.JpegImagePlugin',是因为Pillow 10.x版本对convert_dict_qtables函数做了调整——该函数被重命名为_convert_dict_qtables(变为私有函数),而Sherloq的代码仍在引用旧的函数名。
解决方案
方案1:降级Pillow到兼容版本
安装Sherloq适配的Pillow版本(推荐9.5.0,这是最后一个保留convert_dict_qtables公开导出的版本):
pip install Pillow==9.5.0
执行完成后重新运行sherloq.py即可。
方案2:修改Sherloq代码适配新版本Pillow
如果不想降级Pillow,可直接修改报错文件的导入语句:
- 打开文件
/home/ubuntu/Documents/GitHub/sherloq/gui/noiseprint/utility/utilityRead.py - 找到第13行的导入代码:
from PIL.JpegImagePlugin import convert_dict_qtables - 将其替换为:
from PIL.JpegImagePlugin import _convert_dict_qtables as convert_dict_qtables
保存修改后重新运行脚本即可。
内容的提问来源于stack exchange,提问作者Ramadhan Arif Hardijansyah
相关产品推荐
相关产品推荐

