code runner 默认不支持 python 虚拟环境,需在 settings.json 中修改 "python" 对应的 executormap 为虚拟环境绝对路径;运行时默认在工作区根目录执行,应添加 cd $dir 切换到文件所在目录;c++ 一闪而逝需加 read 或 pause 停留;node.js 的 esm 模块问题需配合 --input-type=module 或改用终端执行。

Code Runner 默认不支持 Python 虚拟环境怎么办
Code Runner 默认调用系统 python 命令,而不是你当前项目激活的虚拟环境里的解释器,运行结果和 pip list 或 IDE 调试行为不一致,尤其在依赖隔离场景下会直接报 ModuleNotFoundError。
- 打开 VS Code 设置(
Ctrl+,),搜code-runner.executorMap,点击「在 settings.json 中编辑」 - 找到
"python"对应的执行命令,把"python -u"改成你的虚拟环境路径,比如:"python": "D:\myproject\.venv\Scripts\python.exe -u"
(Windows)或"python": "/Users/me/myproject/.venv/bin/python -u"
(macOS/Linux) - 路径必须是绝对路径;如果用
venv创建的环境,Windows 下是Scripts/python.exe,macOS/Linux 下是bin/python - 别用
python.pythonPath配置——那是 Python 插件用的,Code Runner 完全不认
如何让 Code Runner 运行 .py 文件时自动进入文件所在目录
默认它在 VS Code 工作区根目录执行,一旦代码里有 open("data.txt") 或 import 相对路径模块,就报 FileNotFoundError 或 ImportError。
- 在
settings.json里给python执行器加-c "import os; os.chdir(os.path.dirname('$fileName'))"前置逻辑 - 完整配置示例:
"python": "cd $dir && python -u "$fileName""
(Windows)
或"python": "cd '$dir' && python -u '$fileName'"
(macOS/Linux) -
$dir是 Code Runner 内置变量,代表当前文件所在目录,不是 shell 的$PWD;注意单引号包裹$dir防止路径含空格出错 - 别用
cd $fileNameDir——这个变量不存在,文档早过时了
为什么 C++ 代码运行一闪而逝,连错误都没看到
Code Runner 执行完就关终端,根本来不及读 Segmentation fault 或 std::cout 输出。这不是 bug,是设计如此——它默认用非交互式 shell 启动。
- 改用
g++编译后加&& ./a.out ; read(Linux/macOS)或&& a.exe && pause(Windows) - 对应配置:
"cpp": "cd $dir && g++ -std=c++17 $fileName -o a.out && ./a.out ; read"
或 Windows:"cpp": "cd $dir && g++ -std=c++17 $fileName -o a.exe && a.exe && pause"
- 注意分号和
&&区别:&&表示前一条成功才执行下一条,;是无条件顺序执行;read和pause必须放在最后且单独用分号隔开 - 如果用了 WSL,终端可能不响应
read,换用bash -c "read -p 'Press any key...'"
Node.js 运行时报错 Cannot find module './xxx' 怎么办
Code Runner 默认不加载 package.json 的 type: "module" 或 exports 字段,也不走 node --experimental-specifier-resolution=node,导致 ESM 模块解析失败。
- 检查你的
package.json是否有"type": "module",有就别用 Code Runner 直接跑.js文件,改用终端node xxx.js - 如果坚持用 Code Runner,在 executorMap 里显式加
--input-type=module(Node 18.12+)或--experimental-modules(旧版) - 示例:
"javascript": "node --input-type=module -u '$fileName'"
- 但注意:
--input-type=module要求文件扩展名是.mjs,否则会报错;若用.js,得配合package.json的type字段,且 Node 版本 ≥ 14.13
cmd 不认单引号,WSL 的 bash 不响应 pause,这些细节不试一遍根本想不到。











