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

Python grpc protobuf存根生成问题:--grpc_out:protoc gen grpc:插件失败,状态代码为1,python,grpc,protocol-buffers,Python,Grpc,Protocol Buffers,正如问题所说,我从源代码处编译了grpc,并且也安装了sudopip-grpcio,但是,grpc\u python\u插件的没有返回任何内容。这是一个问题,因为route_指南的grpc python示例要求我运行protoc-I--python_out=--grpc_out=--plugin=protoc gen grpc='which grpc\u python\u plugin./route\u guide.proto 以生成python存根。由于,哪个grpc\u python\u插件

正如问题所说,我从源代码处编译了grpc,并且也安装了
sudopip-grpcio
,但是,grpc\u python\u插件的
没有返回任何内容。这是一个问题,因为route_指南的grpc python示例要求我运行
protoc-I--python_out=--grpc_out=--plugin=protoc gen grpc='which grpc\u python\u plugin./route\u guide.proto
以生成python存根。由于,
哪个grpc\u python\u插件
没有返回任何内容,我得到以下错误:

: 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用于任何目的,这些方法都是必要的。任何帮助都将不胜感激。

听起来您的
路径中没有
/usr/local/bin
<代码>使安装
默认情况下使用前缀
/usr/local
。或者,编译后,
grpc\u python\u插件
应位于
bin/opt/
以解决此错误,请确保系统上安装了
grpc\u python\u插件
。 在python平台上,
pip install grpcio
不安装特定于平台的插件,因此您必须通过以下步骤分别安装它们

  • a)
    cd grpc
    (grpc存储库)
  • b)
    git子模块更新--init
  • c)
    make grpc\u python\u插件
这将为您构建
grpc
python插件。现在,找出
grpc\u python\u插件
在您的系统上的位置,让我们称之为
binary\u path

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

run\u codegen.sh
更新为
--plugin=protoc gen grpc=binary\u path
或者,将二进制文件复制到环境变量
$PATH
跟踪的位置之一

python -m grpc_tools.protoc --proto_path=. --python_out=. --grpc_python_out=. my_proto.proto
编辑:

显然,gRPC github网站上存在关于此问题的公开问题
Protoc
似乎与
grpc\u python\u插件
存在兼容性问题?我通过安装
grpc\u tools
解决了这个问题,然后使用
grpc\u tools.protoc
而不是
protoc

$ pip install grpcio-tools
$ pip install googleapis-common-protos
有用的python教程:

参见Protoc发行的[791和4961]:


您好,如何对Java执行相同的操作?没有为Java生成存根。虽然这段代码可以回答这个问题,提供关于如何解决问题以及为什么解决问题的附加上下文将提高答案的长期价值。这个答案的有效部分帮助我安装了
googleapis common protos
,它允许我使用
grpc_工具。protoc
那么有办法使用protoc可执行文件吗?不是python-m?