首页 > 解决方案 > 预提交:使用 python 3.6.8 运行 flake8

问题描述

我在我的系统上安装了 Pyton 3.6.8。

python3 --version   //-> Python 3.6.8
python3.6 --version //-> Python 3.6.8

我的 pre-commit-config.yaml 是:

repos:
-   repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.4.0
-   repo: https://gitlab.com/pycqa/flake8
rev: 3.7.9
hooks:
- id: flake8
  language_version: python3.6

我为我的项目安装了预提交挂钩。每次我想对 git 提交一些更改时,预提交都会运行 flake8 错误:

TYP005 NamedTuple does not support defaults in 3.6.0

这适用于 Python 3.6.0,因为 Python 3.6.1+ 引入并允许此功能。 https://docs.python.org/3.6/library/typing.html#typing.NamedTuple

如何将 flake8 配置为与 Python 3.6.8 一起运行?

编辑 当我运行 flake8 file.rb 时,我没有收到错误消息 TYP005。

python3 -m pip install flake
flake --version //-> 3.7.9 (the same version as in the pre-commit script file)

标签: python-3.6flake8pre-commitpre-commit.com

解决方案


免责声明:我是两个有问题的工具(pre-commit、flake8-typing-imports)的作者和另一个(flake8)的维护者


TYP005 代码来自flake8-typing-imports

有两个选项可以指示您的最低支持版本flake8-typing-imports,第一个是命令行参数 / flake8 设置:

--min-python-version 3.6.1

或在您的 flake8 配置中

[flake8]
min_python_version = 3.6.1

python_requires如果你正在分发一个库,你可以使用元数据来指明支持的最低版本——这在setup.cfg

[options]
python_requires >= 3.6.1

顺便说一句,我相信您的问题中缺少一些信息,如果没有additional_dependencies在您的预提交配置中,flake8将单独安装并且无法访问插件,例如flake8-typing-imports- 我猜您实际上有一个类似于:


-   repo: https://gitlab.com/pycqa/flake8
    rev: 3.7.9
    hooks:
    -   id: flake8
        additional_dependencies: [flake8-typing-imports==1.9.0]

当谈到上面的命令行参数时,您可以在此处指定它们args(尽管我个人更喜欢配置文件方法)

    -   id: flake8
        args: [--min-python-version, '3.6.1']
        additional_dependencies: [flake8-typing-imports==1.9.0]

推荐阅读