python - python:导入protobuf生成文件的问题
问题描述
我正在测试 protobuf 生成的文件以用于 python。我遇到的问题是 protobuf 将生成的 python 文件分隔在目录中,然后我在使用 python2 导入时遇到问题。
说,我有目录common
和a
,每个目录都有自动生成的(通过 protobuf)py 文件。如果您查看 中的一个文件a
,它有一个导入内容:
from common import x_pb2 as common_dot_x__pb2
因此,我正在创建另一个脚本来将文件导入a
. 所以....如果我尝试将父级(common
和a
)提供给 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
这应该是什么解决方法?
解决方案
好的.....有一个解决方法:在自动生成的文件所在的所有目录中,添加一个空的init .py 文件。这样导入开始表现。有人知道更简单的方法吗?(现在我必须看看这是否可以通过 protoc 或 maven 以某种方式自动完成)。
推荐阅读
- javascript - TransactionError:事务已中止。在 Transaction._rollback
- java - 如何让一个应用与另一个应用实时通信?
- spring - 如何将 where 子句添加到具有子查询的查询中?
- javascript - 如何在 ReacjJS 中动态添加/删除表行
- r - 如何在 2 列的情况下将 1 添加到列的值?
- c++ - QVariant中的QList,QVariant::type()返回奇怪的类型
- ios - Swift 中的 Target-Action 参数问题
- c# - 向用户控件文本框插入文本的问题
- android - 当提供商是电子邮件/密码时,如何仅发送密码重置电子邮件
- javascript - javascript - 像在 php 中一样获取日期格式?