我有一个使用协议缓冲区的PyDev项目。协议缓冲区文件位于protoc编译器生成的zip文件中。当我运行程序时,一切都有效,但是PyDev会为每个枚举常量报告“导入的未定义变量”。例如:
import model_pb2
value = model_pb2.Expression(type = model_pb2.Expression.PARAMETER)
它将枚举常量“PARAMETER”报告为未定义的变量。我的程序中有几十个类似的错误,我想“正确”修复它们(即不是简单地抑制警告。)
答案 0 :(得分:1)
我发现使用内置函数可以正常工作,但前提是所有原型文件都位于外部库中(见http://pydev.org/manual_101_project_conf2.html)。
这应该有效:
如果您没有沉迷于自动填充,则可以使用ctrl + 1来忽略这些错误as described in this answer。这是使用Eclipse Kepler和pydev 2.8测试的。
答案 1 :(得分:0)
您是否尝试将“model_pb2”添加到强制内置组件中?有关详细信息,请参阅:http://pydev.org/manual_101_project_conf2.html。
答案 2 :(得分:0)
我在protobuf 2.6.1和PyDev 4.5.5中遇到过这个问题。我尝试了上面的建议,在我的案例中没有一个帮助。什么最终摆脱了未定义的变量'使用protobuf枚举时的错误很简单:
访问实例化的protobuf对象上的枚举,而不是protobuf模块。
我不确定这是否适用于OP的用例,但在我的用例中它很简单:
from myprotobuf_module import SomeProtobufMessage
some_protobuf_object = SomeProtobufMessage()
some_enum = some_protobuf_object.SOME_ENUM