TensorFlow中'import object_detection'模块找不到的问题求助
问题原因及解决方案
核心错误点
sys.path 路径配置错误
你添加到sys.path的是object_detection目录本身,但Python导入object_detection.utils时,需要找到包含object_detection的父目录(即research)——因为object_detection是research下的子模块,只有把research加入sys.path,Python才能识别它作为顶级模块。路径写法无效
你写的"...models\research\object_detection\"存在两个问题:...是无效的路径前缀,无法正确指向目标目录;- Windows下的反斜杠
\在Python字符串中需要转义为\\,或者直接使用正斜杠/(跨平台更安全)。
不必要的工作目录切换
切换工作目录到object_detection不仅没必要,还可能打乱脚本中其他相对路径的逻辑,且无法解决模块导入的核心问题。
修正后的代码
import sys import os # 获取当前脚本的绝对路径所在目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 构建models/research的绝对路径(脚本在NAR_object_detection,与models同级) research_path = os.path.join(script_dir, '../models/research') # 将research目录添加到sys.path(必须) sys.path.append(os.path.abspath(research_path)) # 若存在slim目录,也需添加(TensorFlow Object Detection通常依赖该目录) slim_path = os.path.join(research_path, 'slim') sys.path.append(os.path.abspath(slim_path)) # 现在执行导入 from object_detection.utils import label_map_util
补充说明
- 使用绝对路径替代相对路径:通过
os.path.abspath和__file__构建绝对路径,能避免因工作目录变化导致的路径错误。 - 必须添加
slim目录:TensorFlow Object Detection的部分模块依赖slim(位于research目录下),若遗漏会引发其他导入错误。
内容的提问来源于stack exchange,提问作者LivingstoneM
相关产品推荐
相关产品推荐

