首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ImportError:无法从“google.protobuf.internal”导入名称“builder”

ImportError:无法从“google.protobuf.internal”导入名称“builder”
EN

Stack Overflow用户
提问于 2022-04-05 22:49:43
回答 11查看 23.6K关注 0票数 16

我正在跟踪这段视频text,在22:22在这段代码中发现了一个错误。

代码语言:javascript
运行
复制
!python {SCRIPTS_PATH + '/generate_tfrecord.py'} -x {IMAGE_PATH + '/train'} -l {ANNOTATION_PATH + '/label_map.pbtxt'} -o {ANNOTATION_PATH + '/train.record'}
!python {SCRIPTS_PATH + '/generate_tfrecord.py'} -x{IMAGE_PATH + '/test'} -l {ANNOTATION_PATH + '/label_map.pbtxt'} -o {ANNOTATION_PATH + '/test.record'}

。发布准确的错误信息,

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "D:\info\1 Master\2 semster\RealTimeObjectDetection-main\Tensorflow\scripts\generate_tfrecord.py", line 29, in <module>
    from object_detection.utils import dataset_util, label_map_util
  File "C:\Users\bachir\PycharmProjects\pythonProject\venv\lib\site-packages\object_detection\utils\label_map_util.py", line 29, in <module>
    from object_detection.protos import string_int_label_map_pb2
  File "C:\Users\bachir\PycharmProjects\pythonProject\venv\lib\site-packages\object_detection\protos\string_int_label_map_pb2.py", line 5, in <module>
    from google.protobuf.internal import builder as _builder
ImportError: cannot import name 'builder' from 'google.protobuf.internal' (C:\Users\bachir\PycharmProjects\pythonProject\venv\lib\site-packages\google\protobuf\internal\__init__.py)

首先,我试图下载一些丢失的软件包,但同样的问题,我想帮忙。

EN

回答 11

Stack Overflow用户

发布于 2022-06-03 18:52:27

遵循以下步骤:

  1. 安装最新的protobuf (在我的例子中是4.21.1)

pip install protobuf

  1. builder.py...\Lib\site-packages\google\protobuf\internal复制到计算机(比方说“文档”)
  2. 安装与项目兼容的protobuf,对我来说是3.19.4

pip install protobuf==3.19.4

  1. 将builder.py从(例如“文档”)复制到Lib\site-packages\google\protobuf\internal
  2. 运行您的代码
票数 36
EN

Stack Overflow用户

发布于 2022-04-24 00:13:53

您需要升级到protobuf包的最新版本:

pip install --upgrade protobuf

原因是自Protobufv3.20.0以来Python类是简化的。直接从发布说明上说:

Protobuf python生成的代码被简化。描述符和消息类的定义现在是在内部/builder.py中动态创建的。放弃消息类的插入点。

这解释了为什么生成的Python代码现在引用了一个builder模块,如果您还没有更新到protobuf包的最新版本,它就找不到这个模块。在发布说明中没有解释这一点,但是我自己验证了如果升级protobuf包,它是可以工作的。

票数 16
EN

Stack Overflow用户

发布于 2022-10-06 16:14:28

由于某种原因,从从builder.py创建的protobuf包中丢失了TensorFlow文件。解决方法是简单地将builder.py的最新副本从protobuf存储库复制到本地驱动器中。

代码语言:javascript
运行
复制
wget https://raw.githubusercontent.com/protocolbuffers/protobuf/main/python/google/protobuf/internal/builder.py -O [PROTOBUF_PATH]/lib/python3.8/site-packages/google/protobuf/internal/builder.py
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71759248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档