运行pre-commit报AssertionError: black requires Python 3.6+但已装Python3.8如何解决
报错原因
AssertionError: black requires Python 3.6+报错的核心原因是你当前使用的1.15.2版本pre-commit版本过旧,对Python版本的识别逻辑存在缺陷,不会优先调用你本地安装的Python3.8,而是默认匹配到了系统中存在的Python3.5及以下版本来运行black钩子。
解决步骤
- 方案1:升级pre-commit到最新稳定版(优先推荐)
执行以下命令升级pre-commit,清理旧的钩子运行环境后重新执行检查即可:pip install --upgrade pre-commit pre-commit clean pre-commit run --all-files - 方案2:手动指定black钩子的Python版本(无法升级pre-commit时使用)
先查询本地Python3.8的绝对路径:- Linux/macOS执行:
which python3.8 - Windows执行:
where python3.8
打开项目根目录下的.pre-commit-config.yaml配置文件,找到black对应的钩子配置,新增language_version参数指定使用Python3.8:
- repo: https://github.com/psf/black
rev: 22.3.0
hooks:- id: black
# 新增下面这行,版本号和你本地的3.8版本匹配即可
language_version: python3.8
配置修改完成后执行pre-commit clean && pre-commit run --all-files验证是否修复。
- id: black
- Linux/macOS执行:
- 方案3:使用Python3.8独立运行pre-commit
直接通过Python3.8的pip重新安装pre-commit,运行时指定用Python3.8调用pre-commit,全程避免版本识别错误:python3.8 -m pip install pre-commit python3.8 -m pre-commit run --all-files
内容的提问来源于stack exchange,提问作者Raphael
相关产品推荐
相关产品推荐

