VSCode vsc内部cmd命令全部失效,但cmd本身正常

VSCode vsc内部cmd命令全部失效,但cmd本身正常

fanz Lv3

这周假期刚过,回到工位的我一打开 VSCode,奇怪的发现 VSCode 终端多出了一行警告信息:

‘chcp’ is not recognized as an internal or external command, operable program or batch file

看到这个警告信息我感觉不对啊,用了近三年的 VSCode 了,终端从来没有弹出过这个警告,怎么会连chcp都识别不了呢?然后我又试了试 conda、java 甚至是 cmd,结果它居然什么命令都识别不了了。退出 VSCode,直接打开 cmd,又一切正常了,该有的命令一个都不少???

初步猜测是 VSCode 的 bug?我更新到最新版(当时是 1.97.2),然后打开终端依旧错误 👿。我又怀疑是不是我修改 settings 导致的,在选择同步以前的设置时候还发现 1.97.2 版本的 VSCode 登录微软账户会异常,这下可好,不仅没有解决原来的 bug,还发现 VSCode 的新 bug😠。

发现问题

换成之前版本的 VSCode 并且成功同步到之前的设置之后,这个 bug 依然没有解决。我又在想,是不是安装了什么插件导致了这个错误呢?于是我在 VSCode 中选择 禁用所有已安装的扩展,然后终于终于,这个 bug 没有再出现了,那么就能确定确实是 VSCode 的插件出了问题。经过反复尝试,我发现是“Python”这个插件出的问题,只要装这个插件的最新版,命令行就会失效…

可是这个插件是必备插件,我换成 2023.2 版本的"Python"虽然规避掉了这个 bug,但是也导致一些功能没法正常使用,而且我询问了其他朋友,他们的电脑上装最新版本的"Python"都是正常的,为啥我的偏偏就不行?仔细想了想,VSCode 的 cmd 终端不能执行任何命令,就说明 VSCode 的 cmd 终端遗忘了系统配置的 PATH 变量,这个 bug 很可能是 Python 插件在终端输入了未知命令导致的

查看 Python 插件的日志

因此,顺着这个思路,我在使用 VSCode 启动项目的时候查看了一下 Python 插件的日志,信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2025-02-20 20:51:26.159 [info] 试验“pythonTerminalEnvVarActivation”处于活动状态
2025-02-20 20:51:26.159 [info] 试验“pythonTestAdapter”处于活动状态
2025-02-20 20:51:26.159 [info] Native locator: Refresh started
2025-02-20 20:51:26.159 [info] Default formatter is set to ms-python.black-formatter for workspace e:\AppData\大盘数据表导出
2025-02-20 20:51:26.159 [info] Native locator: Refresh started
2025-02-20 20:51:26.159 [info] > pyenv which python
2025-02-20 20:51:26.159 [info] cwd: .
2025-02-20 20:51:26.176 [info] > conda info --json
2025-02-20 20:51:26.179 [info] Conda environment manager found at: D:\Anaconda\Scripts\conda.exe
2025-02-20 20:51:26.219 [info] Native locator: Refresh finished in 760 ms
2025-02-20 20:51:26.223 [info] > pixi --version
2025-02-20 20:51:26.224 [warning] could not find a pixi interpreter for the interpreter at python
2025-02-20 20:51:26.228 [warning] could not find a pixi interpreter for the interpreter at python
2025-02-20 20:51:26.228 [warning] could not find a pixi interpreter for the interpreter at python
2025-02-20 20:51:26.237 [info] > python -c "import sys;print(sys.executable)"
2025-02-20 20:51:26.328 [info] Python 解释器路径: D:\Anaconda\python.exe
2025-02-20 20:51:26.337 [info] > conda info --json
2025-02-20 20:51:26.338 [info] shell: commandPrompt
2025-02-20 20:51:26.349 [info] > pyenv which python
2025-02-20 20:51:26.349 [info] cwd: .
2025-02-20 20:51:26.377 [warning] could not find a pixi interpreter for the interpreter at python
2025-02-20 20:51:27.257 [info] > conda run -n base --no-capture-output python ~\.vscode\extensions\ms-python.python-2024.14.1-win32-x64\python_files\get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2024.14.1-win32-x64/python_files/printEnvVariables.py
2025-02-20 20:51:27.257 [info] shell: commandPrompt
2025-02-20 20:51:27.388 [info] 正在启动 Pylance 语言服务器。
2025-02-20 20:51:27.390 [warning] could not find a pixi interpreter for the interpreter at python
2025-02-20 20:51:27.397 [warning] could not find a pixi interpreter for the interpreter at python
2025-02-20 20:51:27.400 [warning] could not find a pixi interpreter for the interpreter at python
2025-02-20 20:51:27.403 [warning] could not find a pixi interpreter for the interpreter at python
2025-02-20 20:51:28.707 [info] > python ~/.vscode/extensions/ms-python.python-2024.14.1-win32-x64/python_files/printEnvVariables.py
2025-02-20 20:51:28.707 [info] shell: commandPrompt
2025-02-20 20:51:28.820 [warning] could not find a pixi interpreter for the interpreter at python
2025-02-20 20:51:28.824 [info] Setting environment variable CONDA_DEFAULT_ENV in collection to base {"applyAtShellIntegration":true,"applyAtProcessCreation":true}
2025-02-20 20:51:28.824 [info] Setting environment variable CONDA_EXE in collection to D:\Anaconda\Scripts\conda.exe {"applyAtShellIntegration":true,"applyAtProcessCreation":true}
2025-02-20 20:51:28.824 [info] Setting environment variable CONDA_PREFIX in collection to D:\Anaconda {"applyAtShellIntegration":true,"applyAtProcessCreation":true}
2025-02-20 20:51:28.824 [info] Setting environment variable CONDA_PROMPT_MODIFIER in collection to (base) {"applyAtShellIntegration":true,"applyAtProcessCreation":true}
2025-02-20 20:51:28.824 [info] Setting environment variable CONDA_PYTHON_EXE in collection to D:\Anaconda\python.exe {"applyAtShellIntegration":true,"applyAtProcessCreation":true}
2025-02-20 20:51:28.824 [info] Setting environment variable CONDA_SHLVL in collection to 1 {"applyAtShellIntegration":true,"applyAtProcessCreation":true}
2025-02-20 20:51:28.824 [info] Prepending environment variable PATH in collection to D:\Anaconda;...{剩余的Path变量}
2024.3.1.1\bin;C:\Users\xx\.emacs.d\cask\bin;C:\Windows\System32;.; {"applyAtShellIntegration":true,"applyAtProcessCreation":true}
2025-02-20 20:51:28.824 [info] Setting environment variable PROMPT in collection to (base) $P$G {"applyAtShellIntegration":true,"applyAtProcessCreation":true}
2025-02-20 20:51:28.824 [info] Setting environment variable _CONDA_OLD_CHCP in collection to 65001 {"applyAtShellIntegration":true,"applyAtProcessCreation":true}
2025-02-20 20:51:28.824 [info] Setting environment variable CONDA_ROOT in collection to D:\Anaconda {"applyAtShellIntegration":true,"applyAtProcessCreation":true}
2025-02-20 20:51:31.809 [warning] could not find a pixi interpreter for the interpreter at python

为了对比分析,这里是在不会报错的另一台电脑上,Python 插件的日志:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2025-02-20 21:13:55.359 [info] 试验“pythonaa”处于活动状态
2025-02-20 21:13:55.359 [info] 试验“pythonJediLSP”处于活动状态
2025-02-20 21:13:55.359 [info] 试验“pythonDiscoveryModuleWithoutWatcher”处于活动状态
2025-02-20 21:13:55.359 [info] 试验“pythonTensorboardExperiment”处于活动状态
2025-02-20 21:13:55.359 [info] 试验“pythonSurveyNotificationcf”处于活动状态
2025-02-20 21:13:55.359 [info] 试验“PythonPyTorchProfiler”处于活动状态
2025-02-20 21:13:55.359 [info] 试验“pythonDeprecatePythonPath”处于活动状态
2025-02-20 21:13:55.359 [info] 试验“pythonSortEnvs”处于活动状态
2025-02-20 21:13:55.359 [info] 试验“pythonRunFailedTestsButtonDisplayedcf”处于活动状态
2025-02-20 21:13:55.359 [info] 试验“pythonRefreshTestsButtonDisplayed”处于活动状态
2025-02-20 21:13:55.359 [info] 试验“pythonRememberDebugConfigcf”处于活动状态
2025-02-20 21:13:55.359 [warning] Dir "d:\PyCharm_Work\Python_Basic\pythonProject\.pixi\envs" is not watchable (directory does not exist)
2025-02-20 21:13:55.359 [info] Starting Environment refresh
2025-02-20 21:13:55.359 [info] Searching for windows registry interpreters
2025-02-20 21:13:55.360 [info] Searching windows known paths locator
2025-02-20 21:13:55.360 [info] Searching for pyenv environments
2025-02-20 21:13:55.360 [info] Searching for conda environments
2025-02-20 21:13:55.360 [info] Searching for global virtual environments
2025-02-20 21:13:55.360 [info] Searching for custom virtual environments
2025-02-20 21:13:55.360 [info] Searching for windows store envs
2025-02-20 21:13:55.360 [info] pyenv is not installed
2025-02-20 21:13:55.360 [info] Finished searching for pyenv environments: 1293 milliseconds
2025-02-20 21:13:55.360 [info] Finished searching for custom virtual envs: 1292 milliseconds
2025-02-20 21:13:55.360 [info] Finished searching for windows store envs: 1291 milliseconds
2025-02-20 21:13:55.360 [info] > conda info --json
2025-02-20 21:13:55.360 [info] > hatch env show --json
2025-02-20 21:13:55.360 [info] cwd: .
2025-02-20 21:13:55.360 [info] > pyenv which python
2025-02-20 21:13:55.360 [info] cwd: .
2025-02-20 21:13:55.360 [info] Finished searching for global virtual envs: 1801 milliseconds
2025-02-20 21:13:55.360 [info] > pyenv which python
2025-02-20 21:13:55.360 [info] cwd: .
2025-02-20 21:13:55.360 [info] > D:\Anaconda\Anaconda_Install\python.exe -I C:\VSCode_Plugins\extensions\ms-python.python-2025.0.0-win32-x64\python_files\get_output_via_markers.py C:\VSCode_Plugins\extensions\ms-python.python-2025.0.0-win32-x64\python_files\interpreterInfo.py
2025-02-20 21:13:55.360 [info] Finished searching windows known paths locator: 2081 milliseconds
2025-02-20 21:13:55.438 [info] > D:\Python\Python3.6.5\python.exe -I D:\VSCode\VSCode_Plugins\extensions\ms-python.python-2025.0.0-win32-x64\python_files\get_output_via_markers.py D:\VSCode\VSCode_Plugins\extensions\ms-python.python-2025.0.0-win32-x64\python_files\interpreterInfo.py
2025-02-20 21:13:56.240 [info] Finished searching for windows registry interpreters: 2976 milliseconds
2025-02-20 21:13:58.115 [info] > D:\Anaconda\Anaconda_Install\envs\TensorFlow_Study\python.exe -I D:\VSCode\VSCode_Plugins\extensions\ms-python.python-2025.0.0-win32-x64\python_files\get_output_via_markers.py D:\VSCode\VSCode_Plugins\extensions\ms-python.python-2025.0.0-win32-x64\python_files\interpreterInfo.py
2025-02-20 21:13:58.147 [info] > D:\Anaconda\Anaconda_Install\envs\tensor14\python.exe -I D:\VSCode\VSCode_Plugins\extensions\ms-python.python-2025.0.0-win32-x64\python_files\get_output_via_markers.py D:\VSCode\VSCode_Plugins\extensions\ms-python.python-2025.0.0-win32-x64\python_files\interpreterInfo.py
2025-02-20 21:13:58.178 [info] Finished searching for conda environments: 4897 milliseconds
2025-02-20 21:13:58.209 [info] Environments refresh paths discovered (event): 4946 milliseconds
2025-02-20 21:13:58.209 [info] Environments refresh paths discovered: 4946 milliseconds
2025-02-20 21:13:58.474 [info] > D:\Anaconda\Anaconda_Install\envs\tensorflow1.14\python.exe -I D:\VSCode\VSCode_Plugins\extensions\ms-python.python-2025.0.0-win32-x64\python_files\get_output_via_markers.py C:\VSCode_Plugins\extensions\ms-python.python-2025.0.0-win32-x64\python_files\interpreterInfo.py
2025-02-20 21:13:58.512 [info] > D:\Anaconda\Anaconda_Install\envs\tensorflow2\python.exe -I C:\VSCode_Plugins\extensions\ms-python.python-2025.0.0-win32-x64\python_files\get_output_via_markers.py C:\VSCode_Plugins\extensions\ms-python.python-2025.0.0-win32-x64\python_files\interpreterInfo.py
2025-02-20 21:13:58.846 [info] Environments refresh finished (event): 5583 milliseconds
2025-02-20 21:13:58.865 [info] Searching for conda environments
2025-02-20 21:13:58.866 [info] Environment refresh took 5603 milliseconds
2025-02-20 21:13:58.878 [info] Python 解释器路径: D:\Python\Python3.6.5\python.exe
2025-02-20 21:13:58.978 [info] Finished searching for conda environments: 113 milliseconds
2025-02-20 21:13:58.982 [info] Environments refresh finished (event): 132 milliseconds
2025-02-20 21:13:58.982 [info] Environments refresh paths discovered: 132 milliseconds
2025-02-20 21:14:01.098 [info] 正在启动 Pylance 语言服务器。

从这两份日志信息中可以看出,Python 插件会自动调用 conda 环境,并且加载插件中的脚本,但是我自己这部分日志出错比较迷的地方就是[warning] could not find a pixi interpreter for the interpreter at python,这个 pixi 我根本没有使用过,我甚至都不知道它是什么。

简单搜索之后,了解到它是和 Anaconda 差不多的,管理 Python 环境的应用,可是这关我的 cmd 什么事?而且我压根儿就没安装过这个pixi啊,Python 插件为什么要调用它??🤨

Github 上的解决方案

在 Google 搜索了一下这个 issue,发现确实有很多人遇到这个错误:

方案 1

直接安装 pixi,这位用户在安装好 pixi 之后解决了问题。不过我身边不安装 pixi 也能正常使用 Python 插件的例子比比皆是,这个方案我不想采纳。

image.png

方案 2

在 settings.json 中增加下面的配置,有些用户使用该命令解决了问题,但我尝试了无效。而且从刚才的日志信息中也可以看出,Python 插件启动的时候就会检验 pythonTestAdapter 状态。

image.png

方案 3

在 settings 中增加下面的配置,禁止 Python 插件激活 VSCode 的终端,这个我尝试过了,确实是有效果。这样虽然避免了启动 VSCode 的时候终端报错,但是也会导致启动 Python 程序的时候容易出错。还有就是每次新开启一个终端,都得手动激活 conda 环境,这个实在让我无法接受,因为之前我一直是没有出现这个问题的,所以我觉得这也不是治疗根本的解决方案。

1
"python.terminal.activateEnvironment": false

我的解决方案

上面的方案都没有解决我的问题,那么最后的方案还是只有再仔细的检查一下 Python 插件的日志了。还是回到刚才的结论,主要原因还是 Python 插件在启动时导致 终端没有正常加载系统变量 Path,最后才导致 VSCode 内部的 cmd 什么命令都识别不了。我检查了一下自己的环境变量,发现里面确实有很多重复的路径以及失效路径,于是我使用大模型对其进行去重,然后删除了几个不需要的系统路径,然后重启电脑,再次启动 VSCode,这次终于正常了!!

猜测原因:

  1. 很可能是因为原本的 Path 中有很多重复的路径,导致 Path 的长度超长,所以 cmd 命令加载失败;
  2. 还有可能是 Path 变量内部的写法不符合标准,之前我担心 Path 变量太长,使用%Path01%变量代替一部分路劲,在这篇博客 https://www.cnblogs.com/yunying61/articles/16810383.html 中提到了注意事项:
    image.png
  • 标题: VSCode vsc内部cmd命令全部失效,但cmd本身正常
  • 作者: fanz
  • 创建于 : 2025-02-21 16:30:50
  • 更新于 : 2025-02-24 12:24:46
  • 链接: https://redefine.ohevan.com/ss0ybf/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。