gpt4 book ai didi

visual-studio-code - VS Code PyLint 错误 E0602( undefined variable )与 ProtoBuf 编译的 Python 结构

转载 作者:行者123 更新时间:2023-12-05 00:46:43 24 4
gpt4 key购买 nike

我使用 Visual Studio 已经很长时间了,但是它变得太复杂而无法维护。现在我尝试转向 VS Code,但它抛出了许多对我来说没有意义的 PyLint 错误消息(并且程序仍然按预期工作)。这些错误主要发生在从 GoogleProtoBuf 结构生成的 Python 代码中。

例如:

from lbsnstructure.lbsnstructure_pb2 import lbsnPost

def geoaccuracy_within_threshold(post_geoaccuracy, min_geoaccuracy):
"""Checks if geoaccuracy is within or below threshhold defined"""

if min_geoaccuracy == lbsnPost.LATLNG:
allowed_geoaccuracies = [lbsnPost.LATLNG]
elif min_geoaccuracy == lbsnPost.PLACE:
allowed_geoaccuracies = [lbsnPost.LATLNG, lbsnPost.PLACE]
elif min_geoaccuracy == lbsnPost.CITY:
allowed_geoaccuracies = [lbsnPost.LATLNG, lbsnPost.PLACE, lbsnPost.CITY]
else:
return True
# check post geoaccuracy
if post_geoaccuracy in allowed_geoaccuracies:
return True
else:
return False

从 pyLint 抛出错误消息 E0602:

Undefined variable 'lbsnPost' pylint (E0602)
lbsnPost: GeneratedProtocolMessageType



然而,谷歌 explicitly states这种形式的类型引用是正确的:

Enums are expanded by the metaclass into a set of symbolic constants with integer values. So, for example, the constant addressbook_pb2.Person.WORK has the value 2.



我的代码中到处都是类似的错误(工作正常)。我怀疑这是我用错误的约定写的东西,但不知何故仍然有效。但什么是正确的约定?

Screenshot VSCode Pylint Error E0602

此页面似乎讨论了相同的问题,但没有一个解决方案有效:
Undefined variable from import when using protocol buffers in PyDev
也就是说,即使在做 lbsnpost().LATLNG (实例化 protobuf 消息),我得到相同的 undefined variable 错误。

最佳答案

我解决了我的问题。 Apparently ,pylint 有(有?)protobuf 编译的 python 类的问题。有一个包裹available这解决了这个问题。

  • 已安装 pylint-protobuf包 ( pip install pylint-protobuf )
  • 已添加 "python.linting.pylintArgs": ["--load-plugins", "pylint_protobuf"]到 VS Code 中的用户设置

  • 没有错误!

    有关更多信息,请参阅 VS Code linting Docs

    关于visual-studio-code - VS Code PyLint 错误 E0602( undefined variable )与 ProtoBuf 编译的 Python 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53920311/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com