Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

protobuf版本要求在3.20及以下是什么原因?有什么方法可以在protobuf较高版本(5.27)下使用 #70562

Open
fszhao182 opened this issue Dec 30, 2024 · 2 comments
Assignees
Labels
status/new-issue 新建 type/build 编译/安装问题

Comments

@fszhao182
Copy link

问题描述 Issue Description

报错提示:
TypeError: Descriptors cannot 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).
    因为环境需要,上面提到的降低protobuf版本和使用纯python解析这两种方式无法修改,请问是否还有其他可行的方法?

版本&环境信息 Version & Environment Information

paddlepaddle version: 2.6.2

@fszhao182 fszhao182 added status/new-issue 新建 type/build 编译/安装问题 labels Dec 30, 2024
@westfish
Copy link
Contributor

westfish commented Jan 3, 2025

PaddlePaddle(或其它项目)在发布时,往往基于特定的 protobuf 版本生成了 _pb2.py 等文件,当您在本地使用更高版本(例如 5.27)的 protobuf 库时,这些早期版本 protoc 生成的 _pb2.py 里可能调用了已被弃用或调整的接口。如果想使用更高版本的protobuf最直接的方法可能需要重新编译 .proto 文件,但更推荐使用更新版本的paddle可能会避免该问题

@fszhao182
Copy link
Author

PaddlePaddle(或其它项目)在发布时,往往基于特定的 protobuf 版本生成了 _pb2.py 等文件,当您在本地使用更高版本(例如 5.27)的 protobuf 库时,这些早期版本 protoc 生成的 _pb2.py 里可能调用了已被弃用或调整的接口。如果想使用更高版本的protobuf最直接的方法可能需要重新编译 .proto 文件,但更推荐使用更新版本的paddle可能会避免该问题

我看最新的发布版本就是现在这个,只能尝试着自己重新编译.proto 文件吗

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status/new-issue 新建 type/build 编译/安装问题
Projects
None yet
Development

No branches or pull requests

3 participants