VS Code PyLint 错误 E0602(未定义的变量)与 ProtoBuf 编译的 Python 结构

2024-01-12

我使用 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:

未定义变量“lbsnPost”pylint(E0602)
lbsnPost:生成的协议消息类型

然而,谷歌明确指出 https://developers.google.com/protocol-buffers/docs/pythontutorial这种形式的类型引用是正确的:

枚举由元类扩展为一组具有整数值的符号常量。因此,例如,常量 addressbook_pb2.Person.WORK 的值为 2。

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

此页面似乎讨论了同一问题,但没有一个解决方案有效:
在 PyDev 中使用协议缓冲区时导入未定义的变量 https://stackoverflow.com/questions/11278062/undefined-variable-from-import-when-using-protocol-buffers-in-pydev
也就是说,即使在做lbsnpost().LATLNG(实例化 protobuf 消息),我得到相同的未定义变量错误。


我解决了我的问题。显然 https://github.com/PyCQA/pylint/issues/1165, pylint 对 protobuf 编译的 python 类有(有?)问题。有一个包可用的 https://pypi.org/project/pylint-protobuf/这解决了这个问题。

  • 已安装pylint-protobuf https://pypi.org/project/pylint-protobuf/包裹 (pip install pylint-protobuf)
  • added "python.linting.pylintArgs": ["--load-plugins", "pylint_protobuf"]VS Code 中的用户设置

没有错误!

欲了解更多信息,请参阅VS Code linting 文档 https://code.visualstudio.com/docs/python/linting#_commandline-arguments-and-configuration-files

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS Code PyLint 错误 E0602(未定义的变量)与 ProtoBuf 编译的 Python 结构 的相关文章

  • VSCode 扩展的安全性和隐私性

    我发现 VSCode 有很多不错的扩展 然而 我担心这些扩展是否将我的代码发送到他们的任何服务器 有什么办法可以查到吗 我可以使用 fiddler 并隔离插件中可能发生的调用 但不想对我安装的每个扩展都这样做 VScode 团队对此有一些指
  • 警告:“沙箱”不在已知选项列表中,但仍传递给 Electron/Chromium

    我在用Linux Mint 20 and vscode 1 52 1 My xsession errors文件显示Warning sandbox is not in the list of known options but still p
  • 有没有办法让vscode行号字段宽度变小?

    包含代码行号 VSC 的垂直列太宽 有办法缩小范围吗 您无法更改此列的大小 实际上有三列 行号左侧是名为的列glyphMargin 设置调试断点的地方 红点 编辑设置时 当您指向该线上时 该列会显示一支笔 如下面的屏幕截图所示 行号本身 在
  • gRPC + 图片上传

    我想创建一个简单的gRPC用户可以上传他 她的图片的端点 协议缓冲区声明如下 message UploadImageRequest AuthToken auth 1 An enum with either JPG or PNG FileTy
  • Visual Studio Code 中的剪切行快捷方式(VS 中的 Ctrl+L)(不是删除行!)

    Visual Studio 默认情况下有快捷键 Ctrl l 剪切线 它将光标所在的行复制到剪贴板并将其删除 我在 Visual Studio Code 中找不到它 有没有办法将其添加为最终用户 我知道有Ctrl Shift K用于删除行
  • 在 VS Code 中找不到 Git

    由于某种原因 我在 Windows 10 笔记本电脑上运行的 VS Code 中找不到 Git 在我的 Mac 上 当你一直向下滚动时 用户默认设置 中会出现一个 Git 但在我的 Windows 10 笔记本电脑上 它根本不存在 源代码管
  • 使用 Command + P 搜索文件时,Apple M1 Pro 上的 VS Code 速度非常慢

    我正在运行 VS Code 1 70 2 并一直在使用 SSH 远程扩展来连接到本地 Linux 服务器的代码库 多年来Command P文件搜索功能非常快 在大型代码库中是一个非常方便的工具 但在过去 2 周内 该功能已停止运行 执行文件
  • 如何为 Visual Studio 代码设置 boost

    所以我基本上构建了整个boost库并将它们放在C boost include boost 1 73中 但我有一种感觉 在使用这个库之前我必须包含更多步骤 我一直遵循本指南 直到将其设置为 Visual Studio 代码 所以现在我正在互联
  • VSCode 在 React 的 JSX 中错误地格式化三进制

    我正在运行 VSCode 来开发我的 React 应用程序 我有一个简单的三元 isLoading
  • 如何从 Visual Studio Code API 打开浏览器

    我只是在探索一种从用于开发扩展的 Visual Studio Code API 打开默认浏览器的方法 以下是我的代码 var disposable vscode commands registerCommand extension brow
  • 无法使用 Unity 函数在 Visual Studio Code 中获得完整的 Intellisense

    好吧 我知道这个问题已经被问过并回答过很多次了 但我花了大约 3 天的时间试图解决这个问题 但到目前为止我所做的一切都没有奏效 我基本上在 Visual Studio Code 中有部分智能感知 也就是说 它似乎只识别 Unity 类和变量
  • 编写 VS Code 扩展时如何聚焦自定义视图?

    我需要有关 VS Code 扩展的帮助 我已经编写了一个工作正常的自定义视图 但是我想通过使用键盘快捷键或上下文菜单命令来激活 聚焦 进入该视图 我无法找到如何使用 VS code API 来实现这一点 context subscripti
  • 在停止调试时终止 VS Code 中的 ng 服务任务

    我有一个 Angular 项目 目前正在通过 chrome 调试器在 vs code 内进行调试 我的launch json uses preLaunchTask serve 其中服务定义于tasks json as ng serve 这样
  • 您可以用 Google 的 Protocol Buffer 格式表示 CSV 数据吗?

    我最近发现了协议缓冲区 想知道它们是否可以应用于我的特定问题 基本上 我有一些 CSV 数据 需要将其转换为更紧凑的格式以进行存储 因为其中一些文件有几GB CSV中的每个字段都有一个标题 并且只有两种类型 字符串和小数 因为有时有很多有效
  • 颤振预览图标在代码完成时显示损坏的资源图像

    当我第一次安装 flutter 和 dart 扩展时 图标预览工作正常 但是当我在没有 wi fi 的环境中开发时 图标预览损坏了 不确定这是问题所在 我尝试重新安装所有与 flutter 和 dart 相关的扩展 但问题仍然存在 如果有任
  • launch.json 中不允许使用属性 env [VSCode]

    我所做的就是在 VS 中初始化一个模板 Azure Functions 项目 当我尝试通过设置运行配置环境变量时launch json VS直接警告我这是不 允许的 此外 即使当我尝试运行我的 ps1无论如何 对于 env 来说 它不起作用
  • 摩纳哥:如何添加内联自动完成/代码建议?

    我找不到任何有关如何添加内联自动完成功能的示例 如下图所示 有人可以指导我如何在摩纳哥做到这一点吗 这可以在 v1 66 中启用 现在在 Insiders 中 The editor quickSuggestions设置现在接受内联为 配置值
  • 检查 protobuf 消息 - 如何按名称获取字段值?

    我似乎无法找到一种方法来验证 protobuf 消息中字段的值 而无需显式调用其 getter 我看到周围的例子使用Descriptors FieldDescriptor实例到达消息映射内部 但它们要么基于迭代器 要么由字段号驱动 一旦我有
  • Visual Studio - 在新窗口中打开最近使用的内容

    Visual Studio 中是否有任何设置 使得当我 打开最近的 时 它总是在新窗口中打开 现在它只是在同一个窗口中打开它 window openFilesInNewWindow on 控制文件是否应在新窗口中打开 default 文件将
  • 获取 VS Code 扩展中的当前突出显示

    我不是在谈论当前的选择 可以通过以下方式访问它vscode window activeTextEditor selection 当光标位于标识符 变量名称等内部时 它会突出显示 如以下屏幕截图所示 这个突出显示的对象叫什么 我如何访问它 搜

随机推荐