要编译Python的proto文件,我可以
protoc -I=.--python_out=$DST_DIR sommem.proto基于https://developers.google.com/protocol-buffers/docs/pythontutorial
或
python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. some.proto基于https://grpc.io/docs/languages/python/basics/#generating-client-and-server-code
我想知道protoc和python -m grpc_tools.protoc有什么不同,在生成python *_pb2.py[i]文件时,哪一种更值得推荐?
顺便说一句,看起来protoc不支持--grpc_python_out。
发布于 2020-07-07 01:14:34
protoc只包含协议缓冲区的逻辑。也就是说,它将为许多语言生成序列化/反序列化代码。但是,默认情况下,它不会为存根和服务器生成代码。这是通过一个称为协议插件的系统来分离RPC系统的。
Protoc plugins提供了一个简单的接口,可执行文件通过该接口获取标准输入上的协议缓冲区的描述,并在标准输出上输出相应的生成代码。在Google内部,该系统用于为Stubby生成代码。在外部,它用于为gRPC (或任何其他希望使用协议缓冲区的RPC系统)生成代码。
插件可以为自己注册一个命令行标志,以指示protoc应该在哪里输出生成的代码。因此,在上面的示例中,--python_out指示生成的序列化/反序列化代码应该放在哪里,而--grpc_python_out是由gRPC Python代码生成器注册的标志,指示Python存根和服务器代码应该放在文件系统上的什么位置。
grpc_tools is a C extension将protoc和gRPC Python协议插件捆绑在一起,这样用户就不必下载protoc,下载gRPC Python代码生成器,并进行必要的配置设置,使它们能够正常工作。但是,从理论上讲,您应该能够将所有这些部分放在一起,使它们像grpc_tools一样工作(尽管我还没有尝试过)。
https://stackoverflow.com/questions/62649353
复制相似问题