如何使protoc生成的python存根文件在导入中包含包名

mpgws1up  于 3个月前  发布在  Python
关注(0)|答案(2)|浏览(57)

我使用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生成正确的形式。

rqmkfv5c

rqmkfv5c1#

TL; DR; use https://github.com/cpcloud/protoletariat
从该工具中,您可以了解关于protocolbuffers issue的讨论,它基本上阐明了预期用途是将所有存根泵入一个平面源目录。

9w11ddsr

9w11ddsr2#

官方建议将Python Proto Package文件夹添加到路径中(2023年9月)
您可以使用下面的__init__.py中的代码来完成此操作

import os
import sys

sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))

字符串
https://github.com/dydxprotocol/v4-chain/pull/215

相关问题