首页 > 解决方案 > python:导入protobuf生成文件的问题

问题描述

我正在测试 protobuf 生成的文件以用于 python。我遇到的问题是 protobuf 将生成的 python 文件分隔在目录中,然后我在使用 python2 导入时遇到问题。

说,我有目录commona,每个目录都有自动生成的(通过 protobuf)py 文件。如果您查看 中的一个文件a,它有一个导入内容:

from common import x_pb2 as common_dot_x__pb2

因此,我正在创建另一个脚本来将文件导入a. 所以....如果我尝试将父级(commona)提供给 PYTHONPATH,我似乎找不到将脚本导入到的方法a

from a import blah

(blah.py 是里面的自动生成的 py 文件a)我明白了:

ImportError: No module named a

所以....如果我尝试将a目录添加到 PYTHONPATH (并将导入调整为只说import blah,那么我开始遇到从 common 导入的问题(在自动生成的 blah.py 文件中的导入语句a):

    from common import x_pb2 as common_dot_x__pb2
ImportError: No module named common

这应该是什么解决方法?

标签: pythonpython-importprotobuf-python

解决方案


好的.....有一个解决方法:在自动生成的文件所在的所有目录中,添加一个空的init .py 文件。这样导入开始表现。有人知道更简单的方法吗?(现在我必须看看这是否可以通过 protoc 或 maven 以某种方式自动完成)。


推荐阅读