首页 > 解决方案 > 有没有办法配置 pylint(在 vs 代码中)以识别通过通配符导入的方法?

问题描述

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

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

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

提供的代码片段突出了这个问题:

from gurobipy import *

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

我想知道 pylint 是否不能处理通配符导入。

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

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

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

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

标签: pythonvisual-studio-codepylint

解决方案


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

这是一个示例代码结构:

|- main.py
|- mymodules
   |- __init__.py
   |- calculator.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

这只会导致通配符导入警告:

代码

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

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

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


推荐阅读