Python grpc protobuf 存根生成问题:--grpc_out:protoc-gen-grpc:插件失败,状态码为 1
Python grpc protobuf stubs generation issue: --grpc_out: protoc-gen-grpc: Plugin failed with status code 1
正如问题所说,我从源代码编译了 grpc 并且还做了 sudo pip install grpcio
,但是,which grpc_python_plugin
没有 return 任何东西。这是一个问题,因为 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
没有 return 任何东西,我收到以下错误:
: 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 文件但没有服务程序和存根 类,以及服务器和存根方法。当然,如果出于任何目的想要使用 grpc,这些方法都是必需的。任何帮助将不胜感激。
听起来你的 PATH
中没有 /usr/local/bin
; make install
默认使用 /usr/local
前缀。或者,编译后 grpc_python_plugin
应该在 bins/opt/
.
要解决此错误,请确保您的系统上安装了 grpc_python_plugin
。
在 python 平台上 pip install grpcio
不安装特定于平台的插件,因此您必须按照以下步骤单独安装它们
- a)
cd grpc
(grpc 存储库)
- b)
git submodule update --init
- c)
make grpc_python_plugin
这将为您构建 grpc
python 插件。现在,找出 grpc_python_plugin
在您系统上的位置,我们将其命名为 binary_path
如果 binary_path 在 $PATH
环境变量 (echo $PATH
) 下,您就可以开始了。但是,如果它不在 $PATH 变量下,你有两个选择
将 run_codegen.sh
更新为 --plugin=protoc-gen-grpc=binary_path
或者,将二进制文件复制到 $PATH
环境变量
跟踪的位置之一
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]:
python 的 protoc
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_python
和 protoc-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
我遇到了类似的问题(which grpc_cpp_plugin
是空的)。在我的例子中,问题是我没有安装 grpc
,我用 brew install grpc
.
为我的 OS X 解决了这个问题
正如问题所说,我从源代码编译了 grpc 并且还做了 sudo pip install grpcio
,但是,which grpc_python_plugin
没有 return 任何东西。这是一个问题,因为 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
没有 return 任何东西,我收到以下错误:
: 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 文件但没有服务程序和存根 类,以及服务器和存根方法。当然,如果出于任何目的想要使用 grpc,这些方法都是必需的。任何帮助将不胜感激。
听起来你的 PATH
中没有 /usr/local/bin
; make install
默认使用 /usr/local
前缀。或者,编译后 grpc_python_plugin
应该在 bins/opt/
.
要解决此错误,请确保您的系统上安装了 grpc_python_plugin
。
在 python 平台上 pip install grpcio
不安装特定于平台的插件,因此您必须按照以下步骤单独安装它们
- a)
cd grpc
(grpc 存储库) - b)
git submodule update --init
- c)
make grpc_python_plugin
这将为您构建 grpc
python 插件。现在,找出 grpc_python_plugin
在您系统上的位置,我们将其命名为 binary_path
如果 binary_path 在 $PATH
环境变量 (echo $PATH
) 下,您就可以开始了。但是,如果它不在 $PATH 变量下,你有两个选择
将 run_codegen.sh
更新为 --plugin=protoc-gen-grpc=binary_path
或者,将二进制文件复制到 $PATH
环境变量
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]:
python 的 protoc
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_python
和 protoc-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
我遇到了类似的问题(which grpc_cpp_plugin
是空的)。在我的例子中,问题是我没有安装 grpc
,我用 brew install grpc
.