我想使用短绒棉纱(特别是pylint)来调试我的代码,但是接受通配符导入。
此刻,它突出显示了代码中的错误,该错误正在导入gurobipy包:
未定义变量“模型” pylint(未定义变量)
提供的代码段突出显示了此问题:
from gurobipy import *
m = Model("mip1") # Pylint shows error in this line
我想知道pylint是否无法处理通配符导入。
我已经检查了通过控制台命令生成的.pylintrc文件中的pylint选项,但无济于事。
是的,我知道它们是一种不好的编码习惯,但是我不知道我最终会使用多少种方法,我宁愿避免一直写“ package.method”。
在vs代码选项中启用jedi确实允许intellisense推断包对象,但是突出显示错误仍然存在。
如果这不可行,我会很乐意推荐另一个棉短绒。
答案 0 :(得分:0)
当然,最好只导入您真正需要的东西,而不要导入所有东西,然后再使用很多未使用的物品。但是对于个人脚本或项目以及实践目的而言,这不是一个大问题。
因此,如果您只想防止Pylint显示该特定警告,则可以通过将以下内容添加到settings.json中来将其禁用:
"python.linting.pylintArgs": [
"--disable=wildcard-import"
]
您可能想看看this detailed answer问题What exactly does "import * " import?
答案 1 :(得分:0)
它应该能够通过通配符导入来检测模块,具体取决于代码的结构/组织方式。
这是示例代码结构:
|- main.py
|- mymodules
|- __init__.py
|- calculator.py
main.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,
我强烈建议您不要习惯通配符导入或寻找解决方法来隐藏皮棉警告。有人警告您。参见Why is “import *” bad?。启动应用程序时的一个好习惯是,开始将代码分组到具有类似功能的模块中,然后仅导入每个模块。