Python的grpc-tools中protoc模块无法自动识别site-packages内proto文件的问题求助
Python的grpc-tools中protoc模块无法自动识别site-packages内proto文件的问题求助
最近我在使用Python的gRPC工具时遇到了个头疼的问题,想向大家求助:
在Python生态里,gRPC相关的proto文件是拆分到不同小发包里发布的,比如我要用到status.proto,就得安装grpc-status包;而protoc编译器是通过grpc-tools这个Python包提供的模块来调用的。
我先写了一个简单的proto文件my.proto:
# my.proto syntax = "proto3"; import "google/rpc/status.proto";
接着我用虚拟环境安装了所需依赖:
python -m venv v source v/bin/activate pip install grpc-status grpc-tools
但问题出现了,当我运行protoc编译命令时:
python -m grpc_tools.protoc -I . my.proto
直接抛出了错误:
google/rpc/status.proto: File not found.
可实际上这个文件明明存在!它就在虚拟环境的v/lib/python3.11/site-packages/google/rpc/status.proto路径下,是安装grpc-status时依赖的googleapis-common-protos包自带的。
我挺困惑的,既然proto文件是通过独立包分发的,protoc又是以Python模块形式提供的,为什么它不能自动找到这些已经安装好的proto文件呢?有没有办法让protoc自动识别site-packages里的这些proto文件,不用手动指定路径?
备注:内容来源于stack exchange,提问作者Richard Michael
相关产品推荐
相关产品推荐

