Husky V9问题:Python钩子提示command not found,PATH配置无效
解决Husky V9升级后Python钩子"command not found"问题
核心问题原因
Husky V9调整了钩子的执行环境初始化逻辑,旧版本自动继承系统路径的机制不再生效,加上你在init.sh里配置的Python路径格式错误(Windows下不能用类Unix的~/python写法),导致钩子无法找到Python命令。
分步解决方案
1. 修正.config/husky/init.sh的Python路径配置
Windows下Python实际路径是C:\Program Files\python,因路径含空格,需用引号包裹并适配shell格式:
- 若用Git Bash执行钩子,路径写成
/c/Program Files/python - 若用Cmd/PowerShell,路径写成
"C:\Program Files\python"
修改后的init.sh示例:
# .config/husky/init.sh # 将Python路径加入环境变量 PATH="$PATH:/c/Program Files/python" # 针对Cmd/PowerShell的写法(若Husky用Cmd执行) # set PATH=%PATH%;"C:\Program Files\python"
注意:替换为你实际的Python安装路径,比如可能是
C:\Program Files\Python312。
2. 直接在钩子脚本里指定Python完整路径
如果路径配置仍不生效,直接在钩子调用时写全Python可执行文件路径:
比如原钩子命令是python scripts/pre-commit-check.py,改成:
"c:/Program Files/python/python.exe" scripts/pre-commit-check.py
3. 验证钩子执行环境的PATH变量
在钩子脚本开头添加PATH输出,确认Python路径是否加载:
# 在.husky/pre-commit开头添加 echo $PATH # 执行测试命令 npx husky run .husky/pre-commit
查看输出的PATH是否包含你的Python安装路径,若没有,检查init.sh是否被Husky正确读取(V9会自动加载.config/husky/init.sh)。
4. 兼容多开发者环境的方案
避免硬编码绝对路径,让开发者配置环境变量:
- 要求所有开发者在本地设置
PYTHON_PATH环境变量,指向自身Python安装目录 - 修改
init.sh为:
PATH="$PATH:$PYTHON_PATH"
内容的提问来源于stack exchange,提问作者RedGoldPhoenix
相关产品推荐
相关产品推荐

