如何解决grpc_tools.protoc -> '无法使 proto 路径相对'
我想使用 grpc_tools
以编程方式为 Python 生成 protobuf (pb2) 文件。
使用这种布局(可能与“python/”并行的其他语言)
+---gen
+---protos
| phone.proto
|
\---python
call_protoc.py
此安装在 (Windows) Python 3.9.5 venv
grpcio==1.38.0
grpcio-tools==1.38.0
protobuf==3.17.0
还有这个很短的call_protoc.py
from grpc_tools import protoc
protoc.main('--proto_path=../protos --python_out=../gen --grpc_python_out=../gen phone.proto'.split())
调用 ./python
(无需单独安装 protoc
)
python -m grpc_tools.protoc --proto_path=../protos --python_out=../gen --grpc_python_out=../gen phone.proto
生成
+---gen
phone_pb2.py
phone_pb2_grpc.py
但是调用(同目录,同参数)
python call_protoc.py
告诉: 无法使原型路径相对:phone.proto:没有这样的文件或目录
通过查看实现,我发现它预先添加了 sys.argv[0] 并附加了一个 -I<site-packages>/grpc_tools/_proto.py
。
没有给出这些额外参数的理由。
所以我需要添加任何单个参数,然后protoc.main()
按预期工作
from grpc_tools import protoc
protoc.main('foo_or_just_a_dot --proto_path=../protos --python_out=../gen --grpc_python_out=../gen phone.proto'.split())
我是否遗漏了 grpc_tools.protoc.main()
文档中的某些内容?
它不应该和调用一样工作
python -m grpc_tools.protoc <normal_protoc_arguments>
?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。