0

当我从 python 生成 grpc 文件(运行 python -m grpc_tools.protoc)时,我为每个 X proto 文件获得 2 个文件,X_pb2.py并且X_pb2_grpc.py.

但是,通过使用protobuf-maven-plugin (0.6.1) 中的compile-python maven 目标,我只得到 X_pb2.py 文件而不是grpc 文件。我遇到的问题是 pb2.py 文件中缺少服务。那么如何才能构建 grpc.py 文件呢?

来自点子列表

grpcio          1.23.0 
grpcio-tools    1.23.0 
protobuf        3.9.1  
$ python --version
Python 3.7.3
$ pip --version
pip 19.2.3 from /blahblahblah/lib/python3.7/site-packages/pip (python 3.7)
4

2 回答 2

1

看起来 xolstice Maven 插件不支持开箱即用。gRPC 代码生成需要protoc编译器的插件。这个插件被烘焙到grpcio-toolsPyPI 上的包中。您必须编译 Python gRPCprotoc插件并将其提供给 protobuf-maven-plugin以使其工作。该protocPlugin参数看起来应该做你想做的事。

但在更高的层面上,您使用 Maven 构建 Python 工件是否有原因?

于 2019-09-04T18:00:17.483 回答
0

我在将编译命令放入脚本并在编译期间使用 exec-maven-plugin 执行脚本方面取得了巨大成功。

我使用了一个 shell 脚本来运行gRPC Quick Start中的编译命令的变体。需要注意的是,无论您将脚本放在哪里,它都将从项目根目录运行,除非您导航到脚本内的另一个文件夹。

于 2020-06-04T08:09:19.273 回答