为什么在使用VisualStudio代码编写Python代码时会收到2条错误消息?

为什么在使用VisualStudio代码编写Python代码时会收到2条错误消息?,python,visual-studio-code,vscode-settings,pylint,Python,Visual Studio Code,Vscode Settings,Pylint,我在datamodel/目录中有很多数据模型,我不想逐一导入它们,所以我做到了: from datamodel import * # pylint:disable=unused-wildcard-import 接着我又做了: datamodel_file.DataModelClass(db_server) 我在VS代码中遇到以下错误: 这方面有几个问题: 我不明白为什么VS Code/PyLint认为这个变量没有定义,因为我调试它时代码运行正常 为什么会有两条错误消息 我尝试禁用pylin

我在datamodel/目录中有很多数据模型,我不想逐一导入它们,所以我做到了:

from datamodel import *  # pylint:disable=unused-wildcard-import
接着我又做了:

datamodel_file.DataModelClass(db_server)
我在VS代码中遇到以下错误:

这方面有几个问题:

  • 我不明白为什么VS Code/PyLint认为这个变量没有定义,因为我调试它时代码运行正常
  • 为什么会有两条错误消息
  • 我尝试禁用pylint消息作为一种快速尝试,并通过执行以下操作查看结果:
    datamodel_文件.DataModelClass(db_服务器)#pylint:disable=未定义变量
    这会禁用pylint中的错误,但Python中的其他错误仍然存在

  • 如何修复此错误?

    在REPL之外不鼓励使用
    import*
    ,因为在这种情况下,您无法通过自省代码来判断名称应该来自何处。很可能是
    datamodel
    以Pylint或语言服务器无法理解的方式指定了
    datamodel\u文件

    至于两个linter警告,这是因为您同时运行两个工具:Pylint和提供基本linting的Python语言服务器。如果要禁用Python语言服务器1,请参阅


    但是解决这个问题的最好方法就是不要使用
    import*
    。执行导入数据模型
    操作,然后使用
    数据模型.datamodel\u文件
    (或者执行类似于导入数据模型作为dm;dm.datamodel\u文件
    )的操作。或者,您可以使用来自datamodel导入datamodel_文件的

    来回答第一个问题:
    pylint
    对导入进行静态分析。它不会找到需要执行代码才能使变量存在的变量。这包括动态创建的变量和在运行时从DLL加载的内容。
    Undefined variable 'datamodel_file' (pylint(undefined-variable)[22,27]
    Undefined variable: 'datamodel_file' (Python(undefined-variable)[22,27]