问题描述
在GitHub上有一个proto定义,该定义是手动下载的,并且对.proto文件执行了protoc以生成python _pb2.py函数。 协议脚本示例:
#!/bin/sh
SRC_DIR="/Users/user1/Documents/3_Python_projects/Project1/master/proto_schema"
TGT_DIR="/Users/user1/Documents/3_Python_projects/Project1/libs/proto/"
protoc -I=$SRC_DIR/ --python_out=$TGT_DIR $SRC_DIR/offer/domain/enums/event_type.proto
protoc -I=$SRC_DIR/ --python_out=$TGT_DIR $SRC_DIR/offer/domain/models/struct_data.proto
protoc -I=$SRC_DIR/ --python_out=$TGT_DIR $SRC_DIR/offer/services/service.proto
结果文件夹如下:
-->libs
---->proto
------>offer
-------->domain
---------->enums
------------>event_type_pb2.py
---------->models
------------>struct_data_pb2.py
-------->services
---------->service_pb2.py
1。问题
是否有一种方法可以在.proto定义更改时使用protoc生成_pb2.py函数,将_pb2.py函数存储到GitHub并将其导入Python应用程序中而无需人工干预?
2。问题
service.proto文件已从另一个proto文件导入, 例如:
导入“报价/域/模型/struct_data.proto”;
service_pb2.py文件具有python导入功能,如下所示:
从offer.domain.models导入struct_data_pb2为 offer_dot_domain_dot_models_dot_struct__data__pb2
要使python导入正常工作,我必须手动添加libs.proto。使导入功能正常工作
从libs.proto.offer.domain.models导入struct_data_pb2作为 offer_dot_domain_dot_models_dot_struct__data__pb2
如何避免手动编辑.py文件中的导入功能?我不希望原始文件夹(要约和服务)位于我的根项目文件夹中。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)