首页 > 解决方案 > python预提交和pylint

问题描述

我正在使用 Python 3.8.5(在 Visual Studio Code 中)、预提交和 pylint 设置一个项目。在项目中 pylint 报告 PyQt5 模块导入,因为它们是基于 C 的。

为了不让 Pylint 对此进行报告,该.pylintrc文件可以配置extension-pkg-whitelist=PyQt5. 这在 IDE 中运行良好。此外,我像这样使用 pylint 设置了 pre-commit,但 pylint 似乎忽略了 PyQt5 的值,因为 pre-commit 仍然报告 pyqt5 的导入错误

  - repo: https://github.com/PyCQA/pylint
    rev: pylint-2.5.0
    hooks:
      - id: pylint
        args: [--extension-pkg-whitelist=PyQt5]

Main\main.py:1:0: E0401: Unable to import 'PyQt5.QtWidgets' (import-error)

来自官方文档的 Args 参考

Pylint 仍然接受参数,因为例如传递--errors-only确实有效。在 cli 中使用这些确切参数调用 pylint 可以按预期工作:它不会报告 PyQt5,但通过 pre-commit 调用似乎不起作用。我知道该参数已被注意到,因为省略“PyQt5”作为值会导致错误指出缺少参数。因此,不知何故,该值的解析方式与 cli 中的解析方式不同。

我尝试了上面给出的格式,这里的格式,我尝试像这样拆分参数args: [--extension-pkg-whitelist, PyQt5],我尝试添加单/双引号。它似乎没有捡起它。

如何将 args 传递给需要键和值的钩子?

提前致谢

标签: python-3.xpyqt5pylintpre-commitpre-commit.com

解决方案


我对 pydantic 库也有类似的问题。我必须将库添加为依赖项:

-   repo: https://github.com/pycqa/pylint
    rev: v2.9.6
    hooks:
    - id: pylint
      additional_dependencies:
        - 'pydantic'
      args:
        ["--extension-pkg-whitelist=pydantic"]

推荐阅读