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:无法导入名称“WebClient”

ImportError:无法导入名称“AFAVSignature”

ImportError:无法导入名称“评估”(来自意外导入评估)

Django 'ImportError: 无法导入名称 url'

ImportError:导入 PCA 时无法导入名称“LatentDirichletAllocation”[关闭]

如何修复“ImportError:无法导入名称'StringIO'”