如何让Pychecker忽略导入的库?
我在我的Python项目中引入的一个模块在Pychecker下会产生很多警告。修复这个外部模块对我来说不太现实,所以我想告诉Pychecker忽略它。
有没有人知道怎么做?我相信这是可能的,而且应该很简单,但我在谷歌上找了很久,还是没找到相关的文档或例子。
谢谢,
Sam
编辑:很遗憾,我不能给这个问题加上'pychecker'的标签,因为这个标签还不存在,而且我的声望太低,无法创建。
编辑 2 额外问题:pychecker会检查被忽略的模块吗?还是说它只是不会打印出找到的内容?忽略某些模块会让检查速度变快吗?
3 个回答
关于这个额外的奖励问题:
- pychecker会自动导入你给它的文件,这样它就会导入那些文件里引用的内容。这就跟Python的工作方式一样。这是pychecker的第一次处理。
- 接下来,pychecker会检查已经加载的模块,拆解代码,并逐条执行所有的操作码。这是第二次处理。
- 在这两个过程中,它会记录所有产生的警告,即使是那些被忽略的模块产生的警告。然后,它会在显示之前过滤掉这些警告。
我在考虑是否值得修改pychecker,让它完全不去查看黑名单中的模块,或者让它只拆解一个文件(比如为了在编辑器中集成使用)。
根据文档,
如果你想在某个模块、函数、类或方法上屏蔽警告,你可以在.pycheckrc文件中定义一个屏蔽字典。键的例子包括:'模块'、'模块.函数'、'模块.类'、'模块.类.方法',等等。
换句话说,在你的.pycheckrc文件中,如果你要屏蔽的模块叫做foobar
,你需要写:
suppressions = {'foobar': '...'}
这里的...
表示你想要的所有屏蔽选项。你可以使用pychecker -h
来获取所有选项的列表;我觉得'limit=0'
可以满足你的需求(对于这个模块显示最多0个警告,也就是不显示任何警告;-)但你可能想要更有选择性一些(毕竟你只需要在.pycheckrc
中写一次,而不是在每次调用pychecker
的地方都写,这就是.pycheckrc方法的方便之处!)。
我发现了另一个选择 - 你可以使用 -b 这个标志来黑名单某些东西。比如说:
python pychecker.py -b list,of,modules,to,ignore
我不太确定,但我觉得这无论如何都会检查导入的模块,只是不会显示警告而已。使用 -b 这个标志似乎并没有比不使用时快多少,不过至少警告信息是消失了 :-)