钩子 `black` 需要预提交版本 2.9.2 但安装了版本 2.6.0

The hook `black` requires pre-commit version 2.9.2 but version 2.6.0 is installed

我在预提交和黑色方面遇到了问题。

一切正常,直到我使用 pre-commit clean 清除了缓存。现在我总是得到错误

The hook black requires pre-commit version 2.9.2 but version 2.6.0 is installed. Perhaps run `pip install --upgrade pre-commit

如果我检查我的版本,我运行正在使用最新的预提交版本 (v2.12.1)。另外,如果我 运行 推荐的命令,没有任何变化,我得到同样的错误。如果我停用 black 挂钩,错误就会消失,所以我至少知道这是黑色的问题。

我尝试将黑色版本从 stable 更改为最新版本,但没有任何帮助。

有什么办法可以解决这个问题吗?

我的预提交配置:

  - repo: https://github.com/ambv/black
    rev: stable
    hooks:
      - id: black
        language_version: python3.8
        exclude: |
          (?x)(
              migrations/|
              config/|
              _build/|
              buck-out/|
              build/|
              dist/
          )

非常感谢帮助

rev: stable 不是受支持的配置——当您 运行 时,您还会收到一条警告,告诉您:

$ pre-commit  run black --all-files
[WARNING] The 'rev' field of repo 'https://github.com/ambv/black' appears to be a mutable reference
(moving tag / branch).  Mutable references are never updated after first install and are not
supported.  See https://pre-commit.com/#using-the-latest-version-for-a-repository for more details.
Hint: `pre-commit autoupdate` often fixes this.
...

警告还告诉您这样做的基本原理并解释您看到的行为:可变引用在首次安装后永远不会更新——所以您缓存中的版本来自黑色的旧旧版本,当您清除它时已更新为最新版本

black 的最新版本在其定义中使用 types_or,这需要更新版本的 pre-commit

顺便说一句,你的 exclude 没有做你想做的事—— pre-commit 只有 运行 在签入你的存储库的文件上,所以不包括像 [=16 这样的东西=] 和 _build 不是必需的

要修复您看到的实际错误消息,请确保 pip install --upgrade pre-commit(并且如果您已经移动到预commit 是从第一次安装的) -- which -a pre-commit 可以帮助你找到你所有的安装


免责声明:我是预提交的创建者