proto 文件,在 python 中生成代码并运行

Posted

技术标签:

【中文标题】proto 文件,在 python 中生成代码并运行【英文标题】:proto file, generated code in python and go 【发布时间】:2021-12-29 14:25:45 【问题描述】:

我正在尝试使用相同的 proto 文件生成 python 和 go 代码。

我的 proto 文件如下所示:

message City 
  string name = 1;
  int32 street_no = 2;

当我使用以下命令在 python 中生成代码时:

python3 -m grpc_tools.protoc  -I proto/ --python_out=openconfig/ --grpc_python_out=openconfig/ proto/city.proto

然后变量名称保留在snake_case中,但是当在go代码中生成proto文件时,使用以下:

$PROTOC --gogofaster_out=proto --proto_path proto proto/city.proto

然后生成的变量在 CamelCase 中。 因此,street_no 更改为 StreetNo

有没有什么方法可以在 CamelCase 中转换 python 代码而不是 snake_case? 如何使用相同的 proto 文件以不同的语言工作?

我尝试了protoc 以及以下:

$PROTOC --python_out=proto --proto_path proto/city.proto

不过,它还是会在 snake_case 中生成 python 代码。

谢谢,

M-

【问题讨论】:

【参考方案1】:

Protobufs 以给定语言的标准格式生成(又名 CamelCase 用于 Go,snake_case 用于 Python。如果它以不同的方式生成,您将在 Python 中使用 CamelCase 的 linter 标志。是否有任何理由需要变量在不同的语言中使用相同的名称?

【讨论】:

以上是关于proto 文件,在 python 中生成代码并运行的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Protocol Buffers .NET 代码生成 .proto 文件?

python 在Django中生成.zip文件

python 在fasta文件中生成屏蔽范围。

阻止Python在shebang中生成pyc文件[重复]

在 Python 中生成随机文件名的最佳方法

在 Python 3.5 中读取在 Python 2.7 中生成的文件