【问题标题】:grpc: when compiling proto files into python from maven, grpc.py files are missinggrpc:从 maven 将 proto 文件编译成 python 时,缺少 grpc.py 文件
【发布时间】:2020-01-03 03:38:14
【问题描述】:

当我从 python 生成 grpc 文件(运行 python -m grpc_tools.protoc)时,我会为每个 X proto 文件获得 2 个文件,X_pb2.pyX_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)

【问题讨论】:

    标签: python maven grpc grpc-python


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      xolstice Maven 插件似乎不支持开箱即用。 gRPC 代码生成需要protoc 编译器的插件。这个插件被烘焙到 PyPI 上的 grpcio-tools 包中。您必须编译 Python gRPC protoc 插件和 supply it to protobuf-maven-plugin 才能使其工作。 protocPlugin 参数看起来应该做你想做的事。

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

      【讨论】:

      • 感谢您的反馈。这是一个基于 maven 构建的主要基于 java 的项目......因此,创建了 proto 文件,以前,我们生成了仅限 java 的文件......我添加了对 python 文件的支持,因为我正在处理 python 的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      • 2020-04-09
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多