vscode调试时filenotfounderror主因是launch.json中cwd未正确配置;应显式设为"${filedirname}"或"${workspacefolder}/src"等准确路径,而非依赖默认值或终端cwd。

launch.json中cwd设错导致文件找不到
调试时出现FileNotFoundError: [Errno 2] No such file or directory,八成是工作目录没对。VSCode默认把cwd设成${workspaceFolder},但你的代码里用的是相对路径(比如open("data/config.json")),而实际文件在src/子目录下——这时程序就在错的地方找文件。
实操建议:
- 在
launch.json对应配置里显式写"cwd": "${fileDirname}",让工作目录随当前文件位置走 - 如果项目结构固定(如所有脚本都从
src/启动),改用"cwd": "${workspaceFolder}/src" - 别依赖
"console": "integratedTerminal"自动继承终端当前路径——调试会话不读终端pwd
python.terminal.executeInFileDir只影响运行,不影响调试
很多人看到“运行正常但调试报错”,就去开python.terminal.executeInFileDir,结果发现断点还是找不到文件。这个设置只控制Ctrl+F5运行时的终端工作目录,对F5调试完全无效——调试走的是launch.json里的cwd,两者互不干扰。
实操建议:
- 运行和调试行为要分开配:
settings.json里开python.terminal.executeInFileDir解决右键“Run Python File”问题 - 调试路径必须在
launch.json里用cwd字段硬指定,别指望设置项跨场景生效 - 验证方式:调试停在断点后,在调试控制台输
import os; os.getcwd(),看输出是否符合预期
conda环境选对了,但PYTHONPATH没传进去
选了解释器路径(比如~/miniconda3/envs/ml/bin/python),包却导入失败,常见原因是PYTHONPATH没注入。VSCode调试器不会自动把当前工作区加进Python模块搜索路径,尤其当你有自定义模块(如from utils.preprocess import clean)时,ImportError就来了。
实操建议:
- 在
launch.json的env字段里加"PYTHONPATH": "${workspaceFolder}",确保根目录可导入 - 如果模块在子目录(如
lib/),写成"PYTHONPATH": "${workspaceFolder}/lib:${workspaceFolder}" - 避免用
site-packages下建.pth文件的方式——它只对pip install有效,调试器不读.pth
debugpy日志里出现Failed to attach怎么办
断点全灰、调试器卡在“Starting debugpy…”、控制台没输出——不是代码问题,是debugpy和VSCode扩展握手失败。典型日志里有Failed to attach或timeout waiting for debug adapter,说明底层通信断了。
实操建议:
- 先确认
debugpy版本:在目标环境中跑python -m debugpy --version,必须≥1.8.0;旧版(如1.6.x)和最新Python扩展不兼容 - 升级命令:
python -m pip install --upgrade debugpy,注意要在你选中的那个conda环境里执行 - 临时禁用其他Python相关扩展(如Pylance、Jupyter),它们可能劫持调试端口
- 启用日志:在
launch.json加"logToFile": true,查debugpy-*.log里有没有port already in use
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











