CC中刷屏Hook Error No Stderr Output的优化方法【使用范围:没有严格安装python3或python3.exe】】

nakanojinharuka 2026-09-07 03:36 1

接上一个帖子



PreToolUse: Read hook error
Failed with non-blocking status code: No stderr output
PostToolUse: Read hook error
Failed with non-blocking status code: No stderr output
UserPromptSubmit hook error




根据本机目前成功修复的情况,原因定位和原理非常简单,但其形成和每种方式的处理方法基本不一样



相关的GitHub PR确实显示已解决,排除这些的情况下,CSDN的帖子给了一个提示:这个错误和插件的hook的运行方式有关,但至于怎么运行的,运行所需的条件(包括环境、作用域)语焉不详。而且对照各类*./hook.json文件也没有发现特别明显的配置不对的地方。实在是查不到,所以我问了DS,而这一问我完全没有想到是组织问题


1. Python安装



“N老师,不对啊,难道不该想办法在settings.json解决吗?这是忽悠谁?”



前面也有提示,这里需要做一个铺垫,我们先来盘点一下安装Python的方式。


1.1 官网下载安装


这是一般的安装方式,以Ubuntu 24.04系统为例,在下载Python-3.14.7.tgz之后,一般后接的是下面的命令:


1 | tar -xzvf ./Python-3.14.7.tgz -C ......
2 | apt update && apt install ......
3 | ./configure
4 | make
5 | make install -nproc ...... # 我不记得线程数是不是这么写了但是大概是这样

而下载完之后,在安装文件夹下(一般是/usr/local/bin)有若干文件:


python3.14    python3       pip           pip3

注意pythonpython3不可能同时拥有,通常做法是建立关键词软链接(Windows一般叫做创建快捷方式)达成输入哪个都能进入专用命令行的目的。而问题恰恰就出在这里:



初始化(装机)个人电脑、公用/半公用电脑的时候安装的“教程”有什么一般就做了什么,不会回头检查派生对象或附件有没有问题。



而这就要说出第二种安装方式了。


1.2 专用组件打包安装


这个安装方式确实给了很大方便,但也不自觉地培养了一批不太懂计算机常识的人,以Anaconda为代表举例,特别是如果使用Linux发行版的操作系统,一个*.sh文件就能解决所有问题。这样的安装的时候一般也没有python3.exepython3




Conda从设计之初就是为了解决配置麻烦的问题进行的开发,常规思考方式认为“都搞好了那就不用再回头了”。



上文说到,在第一次配置的时候,由于种种原因,大家都无法一次性配置好目前的配置和以后的预留,特别是以专用组件打包安装的方式兴起之后,关注配置对将来的预留的想法就进一步减少了,甚至都不看python可执行文件在哪个地方。在个人电脑配置之下,专用组件打包安装的方式一出现问题基本就是配置预留问题。这些包包括但不限于这些:
























包(专用组件) 用途
Anaconda 科学计算
Miniconda 科学计算、相关后端
Pixi 理科、工科、部分商科的实验环境构建

1.3 虚拟环境?文件夹!附属品!


可能有的人就要问了,Python既然装哪里都行,要么一个源头安装派生一堆环境,要么现搞一个,不香吗?


我只能说,你说得对,前者是PyCharm的方式(原理是venv),后者是uv的方式。甚至不需要刻意安装Python,比如Node.js的安装就能把C++和CPython都装好。


综上所述,Python的安装目前已经做到基本可以不关注它本身的情况,而这一次出现的问题就是它自己本身。


2. 问题排查


核心:python3=~/AppData/Local/Microsoft/WindowsApps/python3非交互子进程(TTY)下静默退出49,且零输出


光看它看不出来,换一个说法:


在设置python3专用映射之前,输入python3会自动跳转到Microsoft Store,需要安装一个应用


这里的问题是,我的Python环境是Node.js安装的附带品,并没有关注到C:/Python314这个文件夹的情况,而且Node.js在安装Python的时候使用的是chocolatey【PEP 397】,类似于uv但不像它,以致C:/Windows/py.exe映射到了C:/Python314/python.exe


解决方法就是把C:/Windows/py.exe复制一份到了C:/Python314/python3.exe,基本解决了这个问题。而这个出问题的插件含hookify。但是,所谓这个插件出问题也算不上核心问题


3. 如果是其它方式?


排查到这里,我刚开始问的是这个:



Windows安装Python的时候,只要不按MS Store装就会出现这个问题?



结果模型给了我一句:所有通过PATHpython3都会踩中,而且报错信息为空,极难排查security-guidance插件的sg-python.sh注释里甚至直接写明了这个坑。


简单来说,因为上面几种常规方式不是巨硬想要的,一个“我不要你觉得,我要我觉得”的条件反射就能解释?


好在,虽然WindowsApps占位符在用户PATH第一位,但是因为系统PATH优先,所以它永远排在Python314之后十几位,根据优先级,复制之后完全不会出现无效的问题,事实上也是这样。


那么,只有uv的电脑呢?已知uv安装之后只有uv.exe和核心解释器;只有conda的电脑呢?甚至于说只安装了QGIS(GDAL)运行环境的电脑呢?不是所有的设备在设计资源提供和管理的时候想到这个问题,真的需要特意安装一个或者复制一个才能解决吗?hookify这个插件固然可以删除,但说不准呢?




坦率地说,这个问题一般也不会归为疑难杂症,而是历史问题,现在AI Coding的工具所需要的底层环境比之前相比都复杂了。不信可以对比下MATLAB、Mathematica这些软件所需的环境,几个环境在耦合一起。而且有的软件的前置条件非常多,典型的是llama.cpp:



  1. 安装C/C++运行时/开发与执行运行时

  2. 安装CUDA驱动

  3. 安装CMake


而且有的还说有安装顺序,完全能和“pip安装包都有顺序”这个点相比了。当然这样的问题算是好解决的NP难,前面排查的那个,我确实不好说了(?)

最新回复 (0)
    没有回复
* 帖子来源Linux.do
返回