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

问题描述 投票:0回答:2

我使用 grpc-tools 包(版本 1.43.0)中的 protoc 工具和 python 3.8.10 为我的 proto3 服务生成数据类型以及客户端和服务器存根。包含存根的生成文件(以“_grpc.py”结尾)使用不带包名称的导入语句导入包含消息数据类型的生成文件:“import _pb2.py”。如果我理解正确的话,当生成的代码包含在包中时,为了使此导入能够在 python 3 中正常工作,此导入需要包含包含它的包的名称:“from import _pb2.py”。有没有办法让 protoc 使用我需要的包名称生成此导入?

附注我目前正在使用 sed 对生成的文件进行后期编辑以添加包名称,因此这里只感兴趣,让 protoc 首先为 python 3 生成正确的形式。

python python-3.x import grpc protoc
2个回答
0
投票

TL;博士;使用 https://github.com/cpcloud/protoletariat

通过该工具,您可以关注关于 protocolbuffers 问题的讨论, 这基本上澄清了预期用途是泵送所有存根 在平面源目录中。


0
投票

官方建议将Python Proto Package文件夹添加到Path中(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

© www.soinside.com 2019 - 2024. All rights reserved.