【问题标题】:Is there a way to configure pylint (in vs code) to recognize methods imported through wildcards?有没有办法配置 pylint(在 vs 代码中)以识别通过通配符导入的方法?
【发布时间】:2019-04-02 20:25:48
【问题描述】:

我想使用 linter(特别是 pylint)来调试我的代码,但接受通配符导入。

目前,它突出显示代码中的一个错误,即导入 gurobipy 包:

未定义变量“模型”pylint(undefined-variable)

sn-p 提供的代码突出了这个问题:

from gurobipy import *

m = Model("mip1") # Pylint shows error in this line

我想知道 pylint 是否无法处理通配符导入。

我检查了 .pylintrc 文件中的 pylint 选项,通过控制台命令生成,但无济于事。

是的,我知道它们是一种糟糕的编码习惯,但我不知道我最终会使用多少包方法,而且我宁愿避免一直写“package.method”。

在 vs 代码选项中启用 jedi 确实允许 intellisense 推断包对象,但错误突出显示仍然存在。

如果它不可行,我很乐意推荐另一个 linter。

【问题讨论】:

  • 嗨,若昂。运行一个快速的谷歌搜索,我找到了这个页面:[docs.pylint.org/en/1.6.0/…。我相信这就是您正在寻找的。​​span>

标签: python visual-studio-code pylint


【解决方案1】:

它应该能够通过通配符导入检测模块,具体取决于代码的结构/组织方式。

这是一个示例代码结构:

|- main.py
|- mymodules
   |- __init__.py
   |- calculator.py

ma​​in.py

from mymodules import *

print(get_sum(1, 2))

mymodules/__init__.py

from .calculator import *

mymodules/calculator.py

def get_sum(op_1, op_2):
    return op_1 + op_2

这只会导致 wildcard-import 警告:

我唯一的 pylint 设置是禁用 UseMinimalCheckers 和缺少文档字符串警告:

"python.linting.pylintArgs": [
    "--disable=missing-docstring"
],
"python.linting.pylintUseMinimalCheckers": false,

我强烈建议不要习惯使用通配符导入或寻找解决方法来隐藏 linter 警告。你被警告是有原因的。见Why is “import *” bad?。启动您的应用程序时,一个好的做法是开始将您的代码分组到具有相似功能的模块中,然后只导入每个模块。

【讨论】:

    【解决方案2】:

    当然,最好只导入你真正需要的东西,而不是导入所有东西然后有很多未使用的项目。但对于个人脚本或项目和练习目的来说,这不是一个大问题。

    因此,如果您只是想阻止 Pylint 显示该特定警告,您可以通过将以下内容添加到您的 settings.json 来禁用它:

    "python.linting.pylintArgs": [
        "--disable=wildcard-import"
    ]
    

    您可能想看看this detailed answer 到问题What exactly does "import * " import?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-08
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多