Protobuf和Python:protoc可以生成__init__.py文件吗?

10

有没有一种方法可以要求protoc在生成.py文件的目录中生成空的__init__.py文件,以便它们可以用作模块?

1个回答

6

我遇到了同样的问题。我很惊讶protoc还没有解决这个问题。此外,似乎protoc生成的Python代码还有其他问题。请参见https://github.com/protocolbuffers/protobuf/issues/881

因此,目前的答案是不行。Protoc不能生成__init__.py文件。

一种选择可能是使用https://github.com/danielgtaylor/python-betterproto从.proto生成Python代码(我们的proto定义也结构化在子文件夹中)。

我目前正在研究的另一个选项是使用bash脚本手动添加一个空的init.py文件:在所有子文件夹中创建空文件

find <path-to-generated-python-proto> -type d -exec touch {}/__init__.py \;

编辑:我在生成的代码的所有文件夹中添加了空的 __init__.py,这样我就可以使用 find_packages 打包 Python 模块(因为它只能找到具有 __init__.py 的模块)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接