我使用protoc工具,从grpc-tools包(版本1.43.0)与python 3.8.10中为我的proto 3服务生成数据类型和客户端和服务器存根。生成的包含存根的文件(以'_grpc. py'结尾)使用没有包名的import语句导入生成的包含消息数据类型的文件:'import<my_service_name>_pb2.py'。如果我理解正确,为了使这个导入在python 3中正常工作,当生成的代码被包含在一个包中时,这个导入需要包含包含它的包的名称:'from <my_containing_package>import<my_service_name>_pb2.py'。有没有办法让protoc用我需要的包名生成这个导入?
P.S.我目前正在使用sed来编辑生成的文件以添加包名,所以在这里,我只感兴趣的是让protoc首先为python 3生成正确的形式。
2条答案
按热度按时间rqmkfv5c1#
TL; DR; use https://github.com/cpcloud/protoletariat。
从该工具中,您可以了解关于protocolbuffers issue的讨论,它基本上阐明了预期用途是将所有存根泵入一个平面源目录。
9w11ddsr2#
官方建议将Python Proto Package文件夹添加到路径中(2023年9月)
您可以使用下面的__init__.py中的代码来完成此操作
字符串
https://github.com/dydxprotocol/v4-chain/pull/215