TensorFlow目标检测API模型评估时出现_tkinter模块缺失错误
解决TensorFlow Object Detection API评估时的
_tkinter缺失错误 这个问题在无桌面的服务器环境里特别常见——你碰到的ModuleNotFoundError: No module named '_tkinter',本质是matplotlib默认会尝试启用Tkinter作为图形渲染后端,但你的运行环境没装Tkinter的系统依赖。至于官方安装测试能通过,是因为测试脚本并没有触发matplotlib的图形界面调用,而评估流程里的COCO指标计算会用到matplotlib,才把这个问题暴露出来。
给你两个实用的解决思路:
临时快速修复(无需安装新依赖)
在运行eval.py之前,先强制matplotlib使用非交互式后端(比如Agg),这样就不会触发Tkinter的调用:
export MPLBACKEND=Agg python eval.py --logtostderr --pipeline_config_path=ssd_inception_v2_coco.config --checkpoint_dir=models/train/ --eval_dir=eval
(顺便提一句:你原来的命令里evad_dir是拼写错误,得改成eval_dir,不然还会碰到参数错误!)
要是不想每次都手动设置环境变量,也可以修改代码:找到object_detection/metrics/coco_tools.py,在文件最顶部添加两行:
import matplotlib matplotlib.use('Agg')
永久解决(安装Tkinter系统依赖)
如果你的环境允许安装系统包,可以直接补上Tkinter的对应版本:
- 针对Ubuntu/Debian系统:
sudo apt-get update && sudo apt-get install python3-tk - 针对CentOS/RHEL系统:
sudo yum install python3-tkinter
安装完成后,重新运行评估命令就可以了。
内容的提问来源于stack exchange,提问作者Evgeniya Tveritinova
相关产品推荐
相关产品推荐

