CÃlimos 2024-07-18 19:42 采纳率: 64.4%
浏览 18

protocolbuf版本太高报错

protobuf版本太高报错:
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:

  1. Downgrade the protobuf package to 3.20.x or lower.
  2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
    但是我已经把原版的卸了重新装了3.20.1的 还是同样报错

    img

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-07-18 21:01
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题:protobuf版本太高导致报错,即使已经重新安装为3.20.1版本也无法解决该问题。 解决方案:
    1. 确保protobuf的版本已经正确安装为3.20.1版本。可以通过命令pip show protobuf来查看当前安装的protobuf版本信息。
    2. 确保protobuf编译工具protoc的版本也和protobuf库版本匹配。需要使用与protobuf库版本相同或更高的protoc版本进行编译。
    3. 尝试重新生成.proto文件对应的_pb2.py文件。在proto文件所在目录下执行protoc --python_out=. your_proto_file.proto命令来重新生成_pb2.py文件。
    4. 检查代码中是否有旧版本的_pb2.py文件仍在被引用,确保代码中引用的是刚刚重新生成的_pb2.py文件。
    5. 重启IDE或者清除缓存,确保最新的proto文件和_pb2.py文件都被正确加载。 案例:重新生成_pb2.py文件 假设有一个名为example.proto的proto文件,内容如下:
    syntax = "proto3";
    message Example {
      int32 id = 1;
      string name = 2;
    }
    

    执行以下命令重新生成_pb2.py文件:

    protoc --python_out=. example.proto
    

    这样就会在当前目录下生成名为example_pb2.py的文件,可以直接在代码中引用并使用该文件。重新生成_pb2.py文件后,应该能够解决protobuf版本太高导致的报错问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月18日

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音