protobuf 和 python:protoc 可以生成 __init__.py 文件吗?

eft*_*ft0 10 python python-module python-2.x python-import protobuf-python

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

Ond*_*ert 6

我遇到了同样的问题。我很惊讶这个问题还没有被 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 \;
Run Code Online (Sandbox Code Playgroud)

编辑:我在生成代码的所有文件夹中输入了空__init__.py,然后我可以使用打包Python模块find_packages(因为它只能找到带有 的模块__init__.py)。