首页 > 解决方案 > Python 包结构:如何导入自动生成的 proto buf 类

问题描述

我有一个使用协议缓冲区的 API,我想将其包装在 Python SDK 中。我使用protoc从 proto buf 定义自动生成 Python 类文件。我目前拥有的包树是

package_name/
    module_name/
        protocompiled/
            __init__.py
            endpoints.py
            messages.py
        main_stuff.py

自动编译的文件endpoints.py使用该messages.py文件:它使用import messages. 但是,鉴于包结构,这是不允许的,因此在尝试执行时import package_name.module.protocompiled.endpoints,会引发错误:ModuleNotFoundError: No module named 'messages'

有没有办法解决这个问题?如果我能够更改自动生成的文件,我可以这样做from . import messages,但由于自动生成,这不是一个选项。

标签: pythonprotocol-buffersproto

解决方案


推荐阅读