Python 从utils导入标签\u映射\u util导入错误:没有名为utils的模块

Python 从utils导入标签\u映射\u util导入错误:没有名为utils的模块,python,python-2.7,tensorflow,import,object-detection,Python,Python 2.7,Tensorflow,Import,Object Detection,我正在尝试运行object\u detection.ipynbtype程序,但它是一个普通的python程序(.py)。它工作得很好,但在.models/research/object\u detection文件夹中运行时,主要问题是当我试图使用正确的sys.append在另一个目录中运行此代码时,我会出现以下错误: 回溯(最近一次呼叫最后一次): 文件“obj_detect.py”,第20行,在 from utils import label_map_util ImportError:没有名

我正在尝试运行
object\u detection.ipynb
type程序,但它是一个普通的python程序(.py)。它工作得很好,但在
.models/research/object\u detection
文件夹中运行时,主要问题是当我试图使用正确的
sys.append
在另一个目录中运行此代码时,我会出现以下错误:

回溯(最近一次呼叫最后一次):

文件“obj_detect.py”,第20行,在

from utils import label_map_util
ImportError:没有名为utils的模块

如果我试图将文件从
.models/research/object\u detection
文件夹导入到另一个目录中的python程序中,那么最终会出现以下更多错误:

回溯(最近一次呼叫最后一次):

文件“classify_image.py”,第10行,在

import object_dt
文件“/home/saikishor/Tensorflow_Models/Models/research/object_detection/object_dt.py”,第18行,在

from utils import label_map_util
文件“/home/saikishor/Tensorflow_Models/Models/research/object_detection/utils/label_map_util.py”,第22行,在

from object_detection.protos import string_int_label_map_pb2
ImportError:没有名为object_detection.protos的模块


如何解决此问题?

可能是您的对象检测文件夹不在您的路径上,因此python不知道在哪里查找文件

您可以在python中使用

import sys

sys.path
如果这是个问题,你可以通过

sys.path.insert(0, 'path/to/your/object_detection')
在python*/site-packages文件夹中,您可以看到utils文件夹。 默认情况下,当我们运行“from utils import label\u map\u util”时,它将尝试在python.*/site packages/utils文件夹中搜索label\u map\u util

此错误可以通过更改目录来解决 或
将文件从tensorflow/models/utils复制到python*/site packages/utils时,我也遇到了同样的问题。这是因为
string\u int\u label\u map\u pb2.py
文件不存在

1.您需要安装
protobuf

https://github.com/google/protobuf/releases
  • cd
    您的
    目标检测路径

    protoc object\u detection/protos/string\u int\u label\u map.proto--python\u out=

  • 您将在
    'object\u detection\protos'中找到
    string\u int\u label\u map\u pb2.py
    文件

  • 没关系,如果仍然存在问题,您可以将对象检测文件夹添加到
    PYTHONPATH

  • 您需要下载protoc 3.3版(已编译)。使用bin目录中的protoc运行以下命令:

    tensorflow$ mkdir protoc_3.3
    tensorflow$ cd protoc_3.3
    tensorflow/protoc_3.3$ wget wget https://github.com/google/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip
    tensorflow/protoc_3.3$ chmod 775 protoc-3.3.0-linux-x86_64.zip
    tensorflow/protoc_3.3$ unzip protoc-3.3.0-linux-x86_64.zip
    tensorflow/protoc_3.3$ cd ../models/research/
    tensorflow/protoc_3.3$ /home/saikishor/tensorflow/protoc_3.3/bin/protoc object_detection/protos/*.proto --python_out=.
    

    这将有望奏效

    你所说的“正常类型的程序”是什么意思?您是否为您的项目创建了虚拟环境?你从哪里得到这些脚本的?您的脚本根本看不到您试图使用的模块,换句话说,这些模块不在Python路径中。你可以在这里读到:不,我的意思是我根据自己的要求将object_detection.ipynb中的代码编辑成一个新的python文件。问题是你不能这样做,因为文件夹中的依赖文件是以不同的方式导入的,比如从object_detection.ptoso导入的……这是什么“路径/到/your/object_detection”?我不明白。。。你能解释一下吗?物体探测文件夹的位置。例如“c:/projects/object\u detection”或“/home/projects/object\u detection”您需要安装protobuf 3.3,那么它只能工作,不能与其他版本一起工作