ImportError:无法导入名称 preprocessor_pb2
Posted
技术标签:
【中文标题】ImportError:无法导入名称 preprocessor_pb2【英文标题】:ImportError: cannot import name preprocessor_pb2 【发布时间】:2018-06-22 16:16:23 【问题描述】:我在网上浏览了几天,但没有找到解决此问题的有效方法。我正在使用 GCloud 上的 Tensorflow 对象检测 API 训练图像数据集。我的工作一直失败,引用了这个错误。我安装了最新的 protobuf 版本,我也执行了此代码(在某些情况下建议作为解决方案):
protoc object_detection/protos/*.proto --python_out=.
我已经按照指示做了所有事情,但我的工作总是失败。
这是详细的错误日志:
Traceback (most recent call last): File "/usr/lib/python2.7/runpy.py",
line 174, in _run_module_as_main "__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code exec code in
run_globals File "/root/.local/lib/python2.7/site-
packages/object_detection/train.py", line 49, in <module> from
object_detection import trainer File "/root/.local/lib/python2.7/site-
packages/object_detection/trainer.py", line 27, in <module> from
object_detection.builders import preprocessor_builder File
"/root/.local/lib/python2.7/site-
packages/object_detection/builders/preprocessor_builder.py", line 21,
in <module> from object_detection.protos import preprocessor_pb2
ImportError: cannot import name preprocessor_pb2
更新:我执行了相同的过程,使用相同的包在我的 CPU 上本地训练数据,并且它没有任何错误地工作。所以可能是 GCloud 的问题。
【问题讨论】:
错误来自“已安装”版本的对象检测“lib/python2.7/site-packages/object_detection/builders/preprocessor_builder.py”。很可能已编译的 proto 文件位于您的 repo 文件夹中,该文件夹不在 PYTHONPATH 上。 我也这样做了:“export PYTHONPATH=$PYTHONPATH:pwd
:pwd
/slim”
这很奇怪。如果您具有 root 访问权限,我建议您在导入失败之前编辑您的 /root/.local/lib/python2.7/site-packages/object_detection/builders/preprocessor_builder.py
文件以添加 import pdb; pdb.set_trace()
。然后,调试导入不起作用的原因。例如,您添加到 PYTHONPATH 的目录应该出现在 sys.path
中。之后不要忘记删除您的编辑:)。
这个问题还在发生吗?您使用的是什么运行时版本?
【参考方案1】:
我已经多次遇到这个错误,每次我都忘记运行命令或从正确的文件夹运行它
您必须从正确的文件夹运行命令
例如,如果您在 Windows 操作系统上,从命令提示符更改目录到 research(object_detection 的父级) 文件夹运行以下命令。根据您所在的操作系统相应地更改命令
1) protoc object_detection/protos/*.proto --python_out=.
2) 设置 PYTHONPATH=%cd%;%cd%\slim
然后从同一命令行启动笔记本并尝试运行。
【讨论】:
正如我所提到的,我已经多次遵循此过程并从正确的文件夹中运行了这些命令,但错误仍然存在set PYTHONPATH=C:\tensorflow1\models;C:\tensorflow1\models\research;C:\tensorflow1\models\research\slim
以上是关于ImportError:无法导入名称 preprocessor_pb2的主要内容,如果未能解决你的问题,请参考以下文章
ImportError:无法导入名称“AFAVSignature”
ImportError:无法导入名称“评估”(来自意外导入评估)
Django 'ImportError: 无法导入名称 url'