7

正如问题所说,我从源代码编译了 grpc 并且也做了sudo pip install grpcio,但是,which grpc_python_plugin它没有返回任何东西。这是一个问题,因为 route_guide 的 grpc python 示例需要我运行protoc -I . --python_out=. --grpc_out=. --plugin=protoc-gen-grpc='which grpc_python_plugin' ./route_guide.proto 才能生成 python 存根。因为,which grpc_python_plugin不返回任何东西,我收到以下错误:

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

如果我将尝试运行的命令缩短为: protoc -I . --python_out=. ./route_guide.proto,它会生成 route_guide_pb2.py 文件,但没有 Servicer 和 Stub 类,以及 server 和 stub 方法。Ofc,如果想将 grpc 用于任何目的,这些方法是必要的。任何帮助,将不胜感激。

4

5 回答 5

9
python -m grpc_tools.protoc --proto_path=. --python_out=. --grpc_python_out=. my_proto.proto

编辑:

显然,gRPC github 网站上有关于这个问题的公开问题。Protoc似乎有兼容性问题grpc_python_plugin?我通过安装解决了这个问题grpc_tools,然后用它grpc_tools.protoc代替了protoc.

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

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

请参阅协议问题 [791 和 4961]:

于 2018-06-20T16:05:24.827 回答
4

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

  • a)cd grpc(grpc存储库)
  • b)git submodule update --init
  • C)make grpc_python_plugin

这将为您构建grpcpython 插件。现在,找出grpc_python_plugin您系统上的位置,让我们调用它binary_path

如果 binary_path 在$PATH环境变量 ( echo $PATH) 下,你就可以开始了。但是,如果它不在 $PATH 变量下,您有两个选择

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

于 2016-06-30T23:15:07.360 回答
2

听起来/usr/local/bin您的PATH;中没有 make install默认情况下使用前缀/usr/local。或者,编译后grpc_python_plugin应该在bins/opt/.

于 2016-01-11T16:51:21.203 回答
2

protoc默认情况下不安装python的gRPC插件

$ protoc -I=grpc/protos helloworld.proto --plugin=grpc_python_plugin --python_out=grpc/helloworld --grpc_python_out=grpc/helloworld
protoc-gen-grpc_pythong is not recognized as an internal or external command,
operable program or batch file.
--grpc_python_out: protoc-gen-grpc_python: Plugin failed with status code 1.

安装protoc-gen-grpclib_pythonprotoc-gen-python_grpc

$ pip install grpclib protobuf

生成你的 python gRPC 存根(替换--grpc_python_out--grpclib_python_out

$ protoc -I=grpc/protos helloworld.proto --plugin=grpc_python_plugin --python_out=grpc/helloworld --grpclib_python_out=grpc/helloworld
于 2021-08-26T11:56:32.410 回答
1

我遇到了类似的问题(which grpc_cpp_plugin是空的)。就我而言,问题是我没有安装grpc,我为我的 OSX 解决了这个问题brew install grpc

于 2022-02-23T15:03:39.653 回答