如何降级protobuf

27

我在我的Ubuntu VPS上不小心更新了protobuf。现在一些非常重要的Python脚本无法正常工作。速度并不是很重要。我有两个解决方案:

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).

降级protobuf包,不确定这是否是正确的方法。

或者设置PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION = python - 但我在哪里设置它?在Python脚本中吗?

2个回答

46

这是弹出的错误信息:“未找到匹配项:protobuf==3.20.*”。 - Shashwat Swain
你可以运行“pip install --upgrade pip”来安装并使用新版的pip。请检查看是否有帮助。 - Dr.House
在阅读注释之前,我实际上已经使用了通配符,并且它起作用了 XD。 - glicerico

1

请参阅2022年5月所做的更改以了解背景信息。

我不建议使用PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python作为您的解决方案。但如果您想使用它,您需要在运行使用生成的源代码(客户端和服务器(如果适用))的代码的环境中设置此环境变量(可能还需要export它?)。

请参阅此线程以了解上述更改的详细信息。

这里是protobuf发布版本

如果您不想重新编译您的protos,您可能想尝试移动到3.20.1,但请意识到这是终点站,您正在拖延不可避免的结果...

如果您愿意重新编译(并测试)您的protos,您应该考虑升级到4.20.x


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接