在vscode中通过修改launch.json文件为项目设置当前工作目录cwd——在launch.json文件中修改cwd变量

关于当前工作目录是什么以及其与模块搜索路径的区别可以参见下文:

Python语言中当前工作目录(Current Working Directory, cwd)与模块搜索第一路径都是指什么???

 

 

---------------------------------------------------------------

 

 

 

给出vscode中python项目的默认launch.json文件内容:

 

复制代码
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true,

        }
    ]
}
复制代码

 

 

可以看到默认的launch.json并没有设置cwd,但是其实在缺省设置下其等价于下面的设置:

复制代码
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true,

            "cwd": "${fileDirname}"
        }
    ]
}
复制代码

 

 

 

在python中当前工作目录为python代码启动时键入命令的所在的目录,而在python中使用相对路径对文件进行读存操作都是以当前工作目录为起始路径的。

默认情况下,在vscode的项目开发过程中当前工作目录为启动文件所在目录,也就是"cwd": "${fileDirname}" ,但是有时候(如子模块测试时)我们的启动文件并不在项目的顶层目录,此时为了确保当前工作目录依旧为项目的顶层目录我们可以在代码中使用os.chdir函数来设定当前工作目录,但是该种方式会破坏代码结构,因此我们使用launch.json文件中设置cwd会更为方便。

 

 

给出设置cwd为项目顶层目录的launch.json文件内容:

复制代码
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true,

            "cwd": "${workspaceFolder}"
        }
    ]
}
复制代码

 

 

如此设置后不论启动项目中的哪个文件其当前工作目录均为项目的顶层目录,当然该种设置主要还是为了测试子模块时使用的。

 

 

============================================

 

posted on   Angry_Panda  阅读(12892)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示