最新的谷歌原型不适用于应用程序引擎



对于我的GAE应用程序,我正在更新requirements.txt中的库,在更新之后,我收到了与protobuf有关的错误消息。

类型错误:不能直接创建描述符。如果这个电话来自_pb2.py文件,则生成的代码已过期,必须用protoc>=3.19.0.如果不能立即再生你的质子,其他一些可能的解决方案是:

  1. 将protobuf封装降级至3.20.x或更低
  2. 将PROTOCOL_BUFFERS_PYTHON_Elementation设置为PYTHON(但这将使用纯PYTHON解析,速度会慢得多(。更多信息:https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-更新

我没有直接使用protobuf,所以看起来其他谷歌库都在使用它。添加

protobuf==3.20.3

符合我的要求。text修复了它。

但是。。。发生了什么事?我需要做多久?我没有从谷歌网上找到任何有用的信息。

必须将库固定到旧版本是一件令人不安的事情,因为在某个时刻某些东西会损坏。

发生了什么

Protobuf计划了一个突破性的更改,并发布了它,更新了主要的修订号。

当这种情况发生时,protobuf的用户应该使用最新版本重新生成。但谷歌并没有用最新版本重新生成他们的库。

我需要多长时间才能将protobuf固定到旧版本

直到谷歌修复了他们的代码。向使用protobuf并导致此错误的Google库提交错误报告。

必须将库固定到旧版本是一件令人不安的事情,因为在某个时刻某些东西会损坏

使用过期的库是一个安全问题,因为它们没有最新的安全补丁。

不过,除此之外,使用固定版本本质上没有什么比总是使用最新版本更稳定的了。事实上,(除了少数例外(通常情况恰恰相反;它更稳定。确定依赖关系会导致确定性的可重复部署,并确保每个开发人员都在相同的代码库上进行测试。

目前,协议缓冲区版本4.21.0在使用时包含了一些突破性的更改。由于您提到了间接使用protobuf,Python仍在调用最新的更新。您可以在"Python更新的协议缓冲区"上查看此链接。

作为一种解决方法,如错误消息所建议的,您可以安装protobuf版本3.20.x或更低版本,或者在requirements.txt文件中设置protobuf==3.20.x以覆盖最新版本。

在谷歌为我们提供解决方案之前,我们没有执行此解决方案需要多长时间的时间表。

我还建议提交一个bug,因为这肯定是一个需要解决的主要问题。

更新:

之前在github中为4.21.0版本提交了一个错误,建议暂时使用3.19.x3.20.x版本,并且已经提出了添加向后兼容层的功能请求。

相关内容

最新更新