10

有没有办法让 protoc__init__.py在它用来生成 .py 文件的目录中生成空文件,以便它们可以用作模块?

4

1 回答 1

3

我遇到了同样的问题。我很惊讶 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文件,然后我可以使用打包 Python 模块find_packages(因为它只能找到带有 的模块__init__.py)。

于 2020-04-06T13:40:07.657 回答