code runner插件本身不执行代码,仅调用系统命令;能否运行取决于环境配置是否匹配,常见问题包括command not found、modulenotfounderror、输入卡死和中文乱码。

Code Runner 插件本身不执行代码,它只是把预设命令扔进终端——能不能跑、跑得对不对,全看你的系统环境和配置是否匹配。装完就点 ▶ 能跑通 Python 或 JS,纯属运气好;多数人卡在 command not found、ModuleNotFoundError、输入卡死或中文乱码上。
为什么 Ctrl+Alt+N 按了没反应,或报 “python: command not found”
根本不是插件问题,是 VSCode 终端压根找不到解释器。Code Runner 不自带任何运行时,只调用你 PATH 里的命令。
- 先在 VSCode 集成终端(
Ctrl+`)里手动敲:python3 --version(别试python,macOS/Linux 多数没软链)、gcc --version、javac -version—— 任一失败,Code Runner 必挂 - Windows 用户注意:
where python输出路径不能含中文或空格(如C:\Program Files\会崩),否则命令直接静默失败 - Mac/Linux 用户用
which python3确认路径,如果输出为空,说明没装或没加进 PATH - 装完环境别忘了重启 VSCode,否则新 PATH 不生效
Python 运行报 ModuleNotFoundError 或输入卡死
默认配置假设你在用系统 Python、脚本无依赖、也不需要交互——现实里这两条几乎都不成立。
- 用了虚拟环境?必须改
code-runner.executorMap里的python值为绝对路径,例如:"python": "/Users/you/project/venv/bin/python -u" - 要
input()?必须开启code-runner.runInTerminal(勾选设置项),否则输出面板不支持 stdin - 输出“一闪而过”或日志延迟?
-u参数不能少,它禁用缓冲,否则print()在循环里可能完全不显示 - import 自定义模块失败?检查
code-runner.cwd是否设为项目根目录(如"$workspaceRoot"),而不是默认的"$fileDirname"
Java / C++ 编译失败:class not found、g++ not found、找不到头文件
Code Runner 默认只处理单文件、平级目录、无 package、无 include 路径的最简场景。稍复杂一点就得自己写命令。
- Java 报
Could not find or load main class?确保.java文件里public class名和文件名严格一致,并在executorMap中加入cd $dir &&切工作目录,例如:"java": "cd $dir && javac $fileName && java $fileNameWithoutExt" - 用了
package com.example;?文件必须放在com/example/子目录下,且命令中cd要退到包根,比如cd $dir/../.. - C++ 报
fatal error: xxx.h: No such file or directory?在命令里显式加-I路径,例如:"cpp": "cd $dir && g++ $fileName -I./include -o $fileNameWithoutExt.out && ./$fileNameWithoutExt.out" - Windows 上 C++ 输出不显示?命令末尾补
&& ./$fileNameWithoutExt.exe,Linux/macOS 不用加.exe
中文乱码、终端打不开、TS/Rust/Go 无法运行
乱码不是文件编码问题,是 Code Runner 启动的子进程继承了错误的 locale 或 shell 环境;非默认语言则根本不在默认 executorMap 里。
- Windows 上 Python/Java 中文 print 崩?关掉 PowerShell 执行策略(或改用 cmd 终端),并在设置里确认
code-runner.terminalRoot是空值(默认) - TypeScript 想一键编译+运行?加自定义映射:
"typescript": "cd $dir && tsc $fileName && node $fileNameWithoutExt.js",前提是你全局装了tsc - Rust:用
"rust": "cd $dir && rustc $fileName && ./$fileNameWithoutExt"(Windows 加.exe) - Go 报
no Go files in current directory?说明当前目录没有go.mod,要么go mod init,要么把code-runner.cwd改成含go.mod的目录
真正难的从来不是“支持多少语言”,而是每个语言背后那堆隐式依赖:PATH 是否干净、工作目录是否准确、变量名大小写是否拼错($fileNameWithoutExt 不是 $fileBasenameNoExtension)、终端是否被安全策略拦截。改一行 executorMap 很快,但漏查一个路径或权限,就能卡你半小时。











