【问题标题】:How can I tell Pychecker to ignore an imported library?如何告诉 Pychecker 忽略导入的库?
【发布时间】:2010-09-17 14:39:46
【问题描述】:

我导入到我的 python 项目中的一个模块在 Pychecker 下触发了很多警告。修复这个外部模块并不是一个真正的选择,所以我想告诉 Pychecker 忽略它。

有人知道怎么做吗?我确信这是可能的,而且可能很简单,但是在搜索 Google 一段时间后,我没有找到任何文档或示例。

谢谢, 山姆

编辑:不幸的是,我不能用 'pychecker' 标记它,因为该标记还不存在,而且我的代表太低而无法创建。

编辑 2 额外的问题:pychecker 是否会检查被忽略的模块,而不是打印它找到的任何内容?还是通过忽略某些模块来加快速度?

【问题讨论】:

    标签: python pychecker


    【解决方案1】:

    根据the docs

    如果您想在某个 模块/函数/类/方法,你可以 定义一个抑制字典 .pycheckrc。键的示例是: '模块','module.function', 'module.class', 'module.class.method', 等等等等。

    IOW,在你的.pycheckrc,如果麻烦的模块被命名为foobar,你会有

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

    ... 表示您想要的所有抑制选项。使用pychecker -h 获取所有选项的列表;我认为'limit=0' 会满足您的要求(该模块最多显示 0 个警告,即没有;-),但您可能希望更具选择性(毕竟您只需要写这个在.pycheckrc 中一劳永逸,而不是在您调用pychecker 的每个地方...这是pycheckrc 方法的便利!)。

    【讨论】:

    • 感谢您的回答。你知道使用这种方法是否意味着 pychecker 会忽略导入的模块,还是会检查并抑制警告?
    • @sam,我相信一旦报告了太多警告(对于它或全部),对模块的检查将结束,但这实际上是一个内部架构问题,没有记录在案,可能会在任何情况下发生变化源版本,因此,如果您真的必须知道它在特定版本中的行为,我认为除了检查源(或尝试使用充满警告的虚拟模块等)之外别无选择。要检查您在命令行中特别列出的模块,当然,--only 是一个非常流行的命令行选项!-)
    【解决方案2】:

    我找到了另一个选项 - 您可以使用 -b 标志将其列入黑名单。例如

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

    我不确定,但我认为这无论如何都会检查导入的模块,但不会打印警告。使用 -b 标志肯定不会比没有标志更快 - 尽管至少警告消失了:-)

    【讨论】:

      【解决方案3】:

      关于额外问题:

      • pychecker 总是导入你传递给它的文件,这会导致它导入任何导入的文件。这就像 Python。这是 pychecker 的第一步。
      • 那么 pychecker 就会真正去遍历加载的模块,反汇编代码,运行所有的操作码。这是第二遍。
      • 在这两种情况下,它都会跟踪即使是被忽略的模块所生成的所有警告。然后它会在显示之前过滤掉这些警告。

      我正在考虑是否值得将 pychecker 更改为根本不查看列入黑名单的模块,或者只反汇编一个文件(例如用于集成到编辑器中)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-20
        • 1970-01-01
        • 2011-12-17
        • 2018-03-06
        • 2014-03-11
        相关资源
        最近更新 更多