You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下pre-commit路径丢失斜杠致python.EXE未找到的解决求助

解决Windows下pre-commit钩子路径丢失斜杠的问题

我们为项目配置了pre-commit钩子,Unix系统运行正常,但在Windows上执行时出现报错:

Check copyright notices...................................................................Failed
- hook id: check-copyright
- exit code: 1

Executable `C:Userstore.cachepre-commitrepoq2jv0lxhpy_env-python3.9Scriptspython.EXE` not found 

从报错信息可以看到,pre-commit生成的Python路径丢失了斜杠,导致无法找到可执行文件。

问题分析

脚本中的#!/usr/bin/env python并非直接问题根源——Windows系统不识别Unix风格的shebang,但pre-commit的language: python配置会自动处理虚拟环境的Python调用。真正的问题出在pre-commit旧版本的Windows路径解析bug,或者钩子配置的兼容性上。

解决方案

  • 修改钩子配置,使用系统Python
    在项目的.pre-commit-hooks.yaml中,将language: python改为language: system,同时显式指定用Python调用脚本,避免虚拟环境路径解析错误:

    - id: check-copyright
      name: Check copyright notices
      entry: python check_copyright.py --verbose --replace
      language: system
      files: \.(py|c|h|cpp|hpp|ld|s|S)$
      require_serial: true
    
  • 更新pre-commit到最新版本
    旧版本pre-commit在Windows路径处理上存在已知bug,执行以下命令更新:

    pip install --upgrade pre-commit
    
  • 检查缓存目录权限
    确保pre-commit缓存目录(C:\Users\<你的用户名>\.cache\pre-commit)拥有读写权限,避免权限问题导致路径生成异常。

  • 使用WSL2规避Windows兼容性问题
    如果上述方法无效,可在Windows上启用WSL2,在Linux子系统中运行pre-commit,完全兼容原有Unix环境的配置。

内容的提问来源于stack exchange,提问作者magicarm22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 05:06:36