当前位置: 首页 > 知识库问答 >
问题:

Python grpc协议存根生成问题:--grpc_out:协议-gen-grpc:插件失败,状态码为1

云育
2023-03-14

正如问题所说,我从源代码编译了grpc,也做了sudo pip install grpcio,但是,grpc_python_plugin的没有返回任何内容。这是一个问题,因为route_guide的grpc python示例要求我运行协议-我。-python_out=。-grpc_out=。--plugin=协议-根-grpc='grpc_python_plugin。/route_guide.proto以生成python存根。由于grpc_python_plugin的没有返回任何内容,我得到以下错误:

: program not found or is not executable
--grpc_out: protoc-gen-grpc: Plugin failed with status code 1.

如果我缩短我试图运行的命令:协议-我.--python_out=.../route_guide.proto,它会生成route_guide_pb2.py文件,但没有服务器和存根类,以及服务器和存根方法。Ofc,如果你想将grpc用于任何目的,这些方法是必要的。任何帮助都将不胜感激。


共有3个答案

嵇出野
2023-03-14

听起来您的路径中好像没有usr/local/bin<默认情况下,code>make install(代码>使安装)使用前缀/usr/local(usr/local)。或者,编译后,grpc\u python\u插件应位于bins/opt/code>中。

谭毅然
2023-03-14
匿名用户

要解决此错误,请确保系统上安装了grpc\u python\u插件。在python平台上,pip安装grpcio不安装特定于平台的插件,因此您必须通过以下步骤单独安装它们

  • a) cd grpc(grpc存储库)

这将为您构建grpc python插件。现在,找出grpc\u python\u插件在系统上的位置,我们将其称为binary\u path

如果binary\u path位于环境变量(echo$path)下,则可以继续。但是,如果它不在$PATH变量下,则有两个选项

run_codegen.sh更新为--plugin=proc-gen-grpc=binary_path或将二进制文件复制到$PATH环境变量跟踪的位置之一

宗政小林
2023-03-14
python -m grpc_tools.protoc --proto_path=. --python_out=. --grpc_python_out=. my_proto.proto

编辑:

显然,gRPC github网站上存在关于此问题的公开问题<代码>协议似乎与grpc\u python\u插件存在兼容性问题?我通过安装grpc\U工具解决了这个问题,然后使用了grpc\U工具。protoc取代了protoc。

$ pip install grpcio-tools
$ pip install googleapis-common-protos

有用的python教程:https://grpc.io/docs/tutorials/basic/python.html

参见Protoc版本【791和4961】:

  • https://github.com/google/protobuf/issues/791
 类似资料:
  • 我刚刚开始玩google proto。当我尝试编译proto java示例中的proto文件时,它不会生成任何grpc文件。 原型文件,https://github.com/grpc/grpc-java/blob/master/examples/src/main/proto/hello_world.proto 终端输出, rsonkhla@raman-OptiPlex-9020:~/sandbox

  • 我正在从事一个使用Java、C#和C应用程序的项目。为了在他们之间进行通信,我尝试使用Google协议缓冲区。我正在使用以下命令。原型文件,取自示例: 我指的是以下教程:https://developers.google.com/protocol-buffers/docs/csharptutorial 其他语言的教程也在那里。 我为每种语言尝试了以下命令行参数: Java: C:\ProtoBuf

  • 我是协议缓冲区和gRPC的新手。现在我正在尝试在Go中使用grpcgrpc-网关构建客户端/服务器架构。 我试着效仿一些例子,但最终总是遇到同样的问题。用protoc生成代码后,我运行go build,得到了这个错误: 这是go.mod: 这是: 这是指向存储库的链接:https://github.com/riccardopedrielli/grpc-gateway-test 我看到生成的go文件

  • 本文档作为 gRPC 在 HTTP2 草案17框架上的实现的详细描述,假设你已经熟悉 HTTP2 的规范。产品规则采用的是ABNF 语法 大纲 以下是 gRPC 请求和应答消息流中一般的消息顺序: 请求 → 请求报头 *有定界符的消息 EOS 应答 → 应答报头 *有定界符的消息 EOS 应答 → (应答报头 *有定界符的消息 跟踪信息) / 仅仅跟踪时 请求 请求 → 请求报头 *界定的消息 E

  • 问题内容: protocol BasePresenterProtocol : class {} protocol DashboardPresenterProtocol : BasePresenterProtocol {} 在上面的代码中,我在下一行收到错误 ,但未确认协议,但我已在中声明。虽然我已经宣布 为什么会出现此错误?请让我知道我在这段代码中做错了什么。 问题答案: 您不能使用type 属性

  • 我想将一个协议(由grpc生成)转换为JSON。 我知道protobuf可以使用:(https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/util/JsonFormat)但这并没有包含在Android系统中的()中,它是Android系统中使用的(https://github.c