如何让Pychecker忽略导入的库?

1 投票
3 回答
1810 浏览
提问于 2025-04-16 04:17

我在我的Python项目中引入的一个模块在Pychecker下会产生很多警告。修复这个外部模块对我来说不太现实,所以我想告诉Pychecker忽略它。

有没有人知道怎么做?我相信这是可能的,而且应该很简单,但我在谷歌上找了很久,还是没找到相关的文档或例子。

谢谢,
Sam

编辑:很遗憾,我不能给这个问题加上'pychecker'的标签,因为这个标签还不存在,而且我的声望太低,无法创建。

编辑 2 额外问题:pychecker会检查被忽略的模块吗?还是说它只是不会打印出找到的内容?忽略某些模块会让检查速度变快吗?

3 个回答

1

关于这个额外的奖励问题:

  • pychecker会自动导入你给它的文件,这样它就会导入那些文件里引用的内容。这就跟Python的工作方式一样。这是pychecker的第一次处理。
  • 接下来,pychecker会检查已经加载的模块,拆解代码,并逐条执行所有的操作码。这是第二次处理。
  • 在这两个过程中,它会记录所有产生的警告,即使是那些被忽略的模块产生的警告。然后,它会在显示之前过滤掉这些警告。

我在考虑是否值得修改pychecker,让它完全不去查看黑名单中的模块,或者让它只拆解一个文件(比如为了在编辑器中集成使用)。

1

根据文档

如果你想在某个模块、函数、类或方法上屏蔽警告,你可以在.pycheckrc文件中定义一个屏蔽字典。键的例子包括:'模块'、'模块.函数'、'模块.类'、'模块.类.方法',等等。

换句话说,在你的.pycheckrc文件中,如果你要屏蔽的模块叫做foobar,你需要写:

suppressions = {'foobar': '...'}

这里的...表示你想要的所有屏蔽选项。你可以使用pychecker -h来获取所有选项的列表;我觉得'limit=0'可以满足你的需求(对于这个模块显示最多0个警告,也就是不显示任何警告;-)但你可能想要更有选择性一些(毕竟你只需要在.pycheckrc中写一次,而不是在每次调用pychecker的地方都写,这就是.pycheckrc方法的方便之处!)。

1

我发现了另一个选择 - 你可以使用 -b 这个标志来黑名单某些东西。比如说:

python pychecker.py -b list,of,modules,to,ignore

我不太确定,但我觉得这无论如何都会检查导入的模块,只是不会显示警告而已。使用 -b 这个标志似乎并没有比不使用时快多少,不过至少警告信息是消失了 :-)

撰写回答