from utils import label_map_util 导入错误:没有名为 utils 的模块
Posted
技术标签:
【中文标题】from utils import label_map_util 导入错误:没有名为 utils 的模块【英文标题】:from utils import label_map_util Import Error: No module named utils 【发布时间】:2018-03-11 16:10:24 【问题描述】:我正在尝试运行object_detection.ipynb
类型的程序,但它是一个普通的python 程序(.py)。它运行良好,但是在 ..models/research/object_detection
文件夹中运行时,但主要问题是当我尝试在具有正确 sys.append
的另一个目录中运行此代码时,我最终得到以下错误:
Traceback(最近一次调用最后一次):
文件“obj_detect.py”,第 20 行,在
from utils import label_map_util
ImportError: 没有名为 utils 的模块
如果我尝试将文件从..models/research/object_detection
文件夹导入到不同目录中的 python 程序中,那么我最终会遇到更多错误,如下所示:
Traceback(最近一次调用最后一次):
文件“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 路径中。你可以在这里阅读:***.com/questions/19917492/how-to-use-pythonpath 不,我的意思是我根据我的要求将 object_detection.ipynb 中存在的代码编辑为一个新的 python 文件。 【参考方案1】:可能是您的 object_detection 文件夹不在您的路径上,因此 python 不知道在哪里查找文件。
你可以在 python 中检查这个
import sys
sys.path
如果是这个问题,你可以解决
sys.path.insert(0, 'path/to/your/object_detection')
【讨论】:
问题是你不能这样做,因为文件夹中的依赖文件是以不同的方式导入的,比如 from object_detection.ptoso import .... 这个“路径/到/你的/object_detection”是什么?我不明白...你能解释一下吗? 对象检测文件夹的位置。例如“c:/projects/object_detection”或“/home/projects/object_detection”【参考方案2】:我也遇到过同样的问题。那是因为string_int_label_map_pb2.py
文件不存在。
1.你需要安装protobuf
。
https://github.com/google/protobuf/releases
cd
你通往object_detection
的路径
protoc object_detection/protos/string_int_label_map.proto --python_out=.
你会在'object_detection\protos'
中找到string_int_label_map_pb2.py
文件
-
没关系,如果还有问题,您可以将您的object_detection文件夹添加到
PYTHONPATH
。
【讨论】:
你需要安装protobuf 3.3,然后才可以,其他版本不行【参考方案3】:在 python*./site-packages 文件夹中,您可以看到 utils 文件夹。 默认情况下,当我们运行“from utils import label_map_util”时,它会尝试在 python 中搜索 label_map_util.*/site-packages/utils 文件夹。
这个错误可以通过改变目录来解决 要么 将文件从 tensorflow/models/utils 复制到 python*.*/site-packages/utils
【讨论】:
【参考方案4】:您需要下载 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=.
希望这会奏效!
【讨论】:
以上是关于from utils import label_map_util 导入错误:没有名为 utils 的模块的主要内容,如果未能解决你的问题,请参考以下文章
from django.utils.importlib import import_module ImportError: No module named importlib
TensorFlow成功解决 from keras.utils import Sequence ImportError: cannot import name ‘Sequence‘
由于错误 <<ImportError: cannot import name 'lobpcg' from 'sklearn.utils.fixes' >> 无法导入 SMOTE
Django报错ImportError: cannot import name ‘ugettext_lazy‘ from ‘django.utils.translation‘
ImportError: cannot import name ‘_maybe_get_pandas_wrapper_freq‘ from ‘statsmodels.tsa.filters._util