Python-更改.proto定义后该怎么办?再次手动执行原型还是有办法自动化?

问题描述

在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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...