VSCode —如何设置工作目录进行调试


88

我开始将vscode用于Python。我有一个简单的测试程序。我想在调试下运行它,并且需要设置运行的工作目录。

我如何/在哪里做?

Answers:


141

@ SpeedCoder5的评论应该是一个答案;

具体来说,您可以指定一个动态工作目录。(即当前打开的Python文件所在的目录),使用"cwd": "${fileDirname}"

如果您在Python: Current File (Integrated Terminal)运行Python时使用的是该选项,则launch.json文件可能看起来像下面的我的文件。

{
    "version": "0.2.0",
    "configurations": [
    {
            "name": "Python: Current File (Integrated Terminal)",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "cwd": "${fileDirname}"
    }, 

    //... other settings, but I modified the "Current File" setting above ...
}

[记住launch.json文件控制着Visual Studio代码项目的运行/调试设置] [1];我的launch.json文件是由VS Code自动生成的,位于我当前的“打开项目”目录中。我只是手动编辑了文件以进行添加,"cwd": "${fileDirname}"如上所示。

请记住,该launch.json文件可能特定于您的项目,也可能特定于目录,因此请确认您在编辑正确的文件 launch.json(请参阅注释)

如果没有launch.json文件,请尝试以下操作

要创建launch.json文件,请在VS Code中打开项目文件夹(文件>打开文件夹),然后在“调试”视图顶部栏上选择“配置齿轮”图标。[1]:https//code.visualstudio.com/docs/editor/debugging#_launch-versus-attach-configurations


6
有什么方法可以将其设置为所有配置的默认设置?
Serhiy

1
确保您正在编辑正确的launch.json文件!以我的经验,VS Code在我打开的每个项目文件夹中都创建一个.vscode目录。如果昨天您打开了文件夹parent /,而今天您打开了父/子/,则必须进行适当的更改。
chrisinmtown

44

您需要做的就是在launch.json文件中配置cwd设置,如下所示:

{
    "name": "Python",
    "type": "python",
    "pythonPath":"python", 
    ....
    "cwd": "<Path to the directory>"
    ....
}

有关此问题的更多信息,请参见VS Code官方网站


是的,做到了。我看到它实际上是.vscode目录,所以我认为我需要在最后添加\ ..对吗?
user1443098

是的,将相应地修改答案

17
"cwd": "${fileDirname}"在开源文件的当前目录中运行
SpeedCoder5 '18

16

此设置对我有帮助:

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "cwd": "${workspaceFolder}\\app\\js", // set directory here
  "program": "${workspaceFolder}\\app\\js\\server.js", // set start js here
}

9

在某些情况下,将PYTHONPATH连同一起设置可能也很有用workspaceFolder

{
    "name": "Python: Current File",
    "type": "python",
    "request": "launch",
    "program": "${file}",
    "console": "integratedTerminal",
    "cwd": "${workspaceFolder}",
    "env": {
        "PYTHONPATH": "${cwd}"
    }
}


3

我将向在Node.js上使用TypeScript的人员发布此示例配置

在我的项目中,我的Node.js服务器TypeScript文件位于Application_ts文件夹中,而已编译的js文件在名为Application的文件夹中生成

因为当我们在调试模式下运行应用程序或正常启动它时,我们应该从包含js文件的Application文件夹开始,以便在下面的配置中从我的application_ts也存在并且可以正常运行的根文件夹运行debug

{
  "version": "0.2.0",
  "configurations": [
    {
        "type": "node",
        "request": "launch",
        "name": "Debug TypeScript in Node.js",
        "program": "${workspaceRoot}\\Application\\app.js",
        "cwd": "${workspaceRoot}\\Application",
        "protocol": "inspector",
        "outFiles": [],
        "sourceMaps": true
    },        
    {
        "type": "node",
        "request": "attach",
        "name": "Attach to Process",
        "port": 5858,
        "outFiles": [],
        "sourceMaps": true
    }
 ]
}

1

您可以使用中的cwd参数为调试程序设置当前工作目录launch.json


超!让我进入下一步。现在,尝试在调试中实际运行程序。这是代码:print(os.getcwd())
user1443098

超!让我进入下一步。我有一个单行代码:我要调试的print(os.getcwd())。我单击调试图标(或按F5键),“环境”下拉菜单下有一条蓝色的移动线。但是,我的代码永远不会运行。猜猜我缺少什么。那会是什么?
user1443098

忘了最后两个,我明白了
user1443098

1
下件事 使用该建议,我很惊讶地看到$ {workspaceRoot}实际上不是根目录,而是根目录下的.vscode目录。这符合预期吗?如果是这样,我可以将cwd设置为$ {workspaceRoot} \ ..(在Windows上)
user1443098

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.