python - 有没有办法配置 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。
解决方案
它应该能够通过通配符导入检测模块,具体取决于代码的结构/组织方式。
这是一个示例代码结构:
|- 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 *”不好?. 启动您的应用程序时,一个好的做法是开始将您的代码分组到具有相似功能的模块中,然后只导入每个模块。