解决办法
回退 grpcio-tools
版本到 1.43.0
及更早版本
pip install grpcio-tools==1.43.0
过程与说明
今天在学习
python
的grpc_tools.protoc
编译protobuf
文件时,突然惊奇的发现执行命令后生成的pb
文件中并没有方法和类,搞的我都开始怀疑人生了。
以下是复现过程
protobuf文件
syntax = "proto3";
message HelloRequest {
string name = 1; // name 表示名称
}
编译命令
python -m grpc_tools.protoc --python_out=. --grpc_python_out=. -I. *.proto
正常执行完了就应该有方法的定义的,结果愣是没有
最后经过一大圈baidu+google,终于找到了说明,原来是新版本的 grpc_tools
不直接生成定义了,而是运行中动态生成,所以还是可以正常运行的。
附上原始说明:https://stackoverflow.com/questions/71960226/protocol-buffers-in-python-no-classes-generated
虽然能正常运行,但是这样非常不方便,使用 Pycharm
不就是为了它完美的语法提示嘛,现在不生成方法了,那就没有语法提示了,工作效率直线下降。为了解决这个问题,只能将 grpcio-tools
版本回退。
实测 grpcio-tools
最后一个能生成方法和类的定义的版本是 1.43.0
,从 1.44
开始就没有定义内容了,开始动态生成。