VS Code调试当前目录Python文件失效,求有效解决办法
VS Code Python调试工作目录异常问题
问题背景
这个问题已经被问过好几次,但之前的解决方案都不管用了,所以来找最新的修复办法。
工作区目录结构
我的VS Code工作区是这样的:
- work__assignments(VS Code主工作区文件夹)
- assignment__1
- data
- modules
- tests
- assignment__2
- data
- modules
- tests
- assignment__1
具体问题
我在主工作区下的子文件夹(比如work__assignments > assignment__2 > modules)里写代码,调试的时候,调试器总是从主工作区work__assignments启动,导致找不到当前modules目录下的其他模块,调试直接失败。
已经试过但没用的方法
- 修改
launch.json添加"cwd": "${fileDirname}"配置:
{ "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "${fileDirname}" }
- 修改
launch.json添加"cwd": ""配置:
{ "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "" }
- 修改
launch.json添加如下配置:
{ "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "${workspaceFolder}", "env": { "PYTHONPATH": "${cwd}" } }
- 修改VS Code偏好设置(路径:
File > Preferences > Settings > Python > Execute in File Dir)
每次调试我都是点右上角的“Debug Python File”按钮,但调试器就是认准主工作区启动,不肯用代码所在的目录。
解决方案
方法1:确认launch.json的存放位置
得确保你的launch.json是放在当前工作区的.vscode文件夹里,不是全局设置里的.vscode目录。要是用的全局配置,可能覆盖不了当前工作区的调试规则。
方法2:别用右上角的默认调试按钮
右上角的“Debug Python File”可能会自动用临时配置,完全不理你写的launch.json。试试这么操作:
- 按
Ctrl+Shift+D打开左侧的“运行和调试”面板 - 在顶部的下拉菜单里选你自己定义的
Python: Current File配置 - 点绿色启动按钮开始调试,别再点右上角的按钮了
方法3:更新Python插件
旧版本的VS Code Python插件可能存在cwd变量解析的bug,去扩展面板找到Python插件,更新到最新版本再试。
方法4:代码里手动添加模块路径
要是上面的方法都没用,直接在代码开头加几行,把当前文件所在目录加到Python的搜索路径里:
import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__)))
这样就算工作目录不对,Python也能找到当前文件夹里的模块。
方法5:检查终端默认工作目录
因为你用的是integratedTerminal,去看看VS Code的终端默认目录设置:
- 按
Ctrl+,打开设置 - 搜索
Terminal > Integrated > Cwd - 别让它强制设成
${workspaceFolder},可以改成${fileDirname}或者留空
内容的提问来源于stack exchange,提问作者exan
相关产品推荐
相关产品推荐

