VSCode -- 如何设置调试工作目录
Posted
技术标签:
【中文标题】VSCode -- 如何设置调试工作目录【英文标题】:VSCode -- how to set working directory for debug 【发布时间】:2016-12-02 01:33:32 【问题描述】:我开始在 Python 中使用 vscode。我有一个简单的测试程序。我想在调试下运行它,我需要为运行设置工作目录。
我该如何/在哪里这样做?
【问题讨论】:
【参考方案1】:@SpeedCoder5 的评论值得回答;
具体可以指定一个动态的工作目录; (即当前打开的 Python 文件所在的目录),使用 "cwd": "$fileDirname"
——这利用了 "variables reference" feature in VS Code 和预定义变量 fileDirname
如果您在运行 Python 时使用Python: Current File (Integrated Terminal)
选项,您的launch.json
文件可能与我的类似,如下所示(more info on launch.json
files here)。
"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 ...
Remember the launch.json
file controls the run/debug settings of your Visual Studio code project;我的launch.json
文件是由VS Code 自动生成的,位于我当前的“打开项目”目录中。我只是手动编辑文件以添加"cwd": "$fileDirname"
,如上所示。
请记住launch.json
文件可能特定于您的项目或特定于您的目录,因此请确认您正在编辑正确 launch.json
(见评论)
如果你没有launch.json
文件,try this:
要创建 launch.json 文件,请在 VS Code 中打开您的项目文件夹(文件 > 打开文件夹),然后选择调试视图顶部栏上的配置齿轮图标。
【讨论】:
有什么方法可以将此设置为所有配置的默认设置? 确保您正在编辑正确的 launch.json 文件!根据我的经验,VS Code 在我打开的每个项目文件夹中都会创建一个 .vscode 目录。如果昨天您打开了文件夹 parent/ 而今天您打开了 parent/child/,则您必须进行适当的更改。 还有一个类似launch.json的文件:workspace[x].code-workspace。它有一个“启动”键。这个设置是否类似于launch.json条目? 我可以将终端中的文件夹设置为脚本所在的文件夹吗?例如。我的最后一个 ps1 脚本行是 set-location foo,我希望终端位于 foo 中。 这个答案对我不起作用,但这个答案对我有用:***.com/a/62331298/65326【参考方案2】:您需要做的就是在launch.json文件中配置cwd设置如下:
"name": "Python",
"type": "python",
"pythonPath":"python",
....
"cwd": "<Path to the directory>"
....
更多信息可以在on the official VS Code docs website找到。
【讨论】:
是的,做到了。我看到它实际上是.vscode目录,所以我想我需要在末尾添加\..,对吧? 是的,会相应地修改答案"cwd": "$fileDirname"
在开源文件当前目录运行
很好地指出文档【参考方案3】:
此设置对我有帮助:
"type": "node",
"request": "launch",
"name": "Launch Program",
"cwd": "$workspaceFolder\\app\\js", // set directory here
"program": "$workspaceFolder\\app\\js\\server.js", // set start js here
【讨论】:
非常感谢 :)【参考方案4】:在某些情况下,将PYTHONPATH
与workspaceFolder
一起设置可能也很有用:
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "$file",
"console": "integratedTerminal",
"cwd": "$workspaceFolder",
"env":
"PYTHONPATH": "$cwd"
【讨论】:
谢谢,有帮助。但我不确定我是否理解为什么需要这样做。你能解释一下吗?【参考方案5】:我为在 Node.js 上使用 TypeScript 的人发布此示例配置
在我的项目中,我的 Node.js 服务器 TypeScript 文件位于文件夹 Application_ts 并在名为Application的文件夹中生成编译好的js文件
因为当我们在调试模式下运行我们的应用程序或正常启动它时,我们应该从包含 js 文件的 Application 文件夹开始 所以下面的配置从我的 application_ts 也存在并且完美运行的根文件夹中运行调试
"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
]
【讨论】:
【参考方案6】:您可以使用launch.json
中的cwd
参数为被调试程序设置当前工作目录
【讨论】:
超级!让我进入下一步。现在,尝试在调试中实际运行程序。这是代码: print (os.getcwd()) 超级!让我进入下一步。我有一个要调试的单行:print (os.getcwd())。我点击调试图标(或按 F5),在 Environment 下拉菜单下有一条蓝色的小移动线。但是,我的代码永远不会运行。猜猜我错过了什么。那会是什么? 忘记最后两个,我明白了 接下来的事情。使用该建议,我惊讶地发现 $workspaceRoot 实际上不是根目录,而是根目录下的 .vscode 目录。这是预期的吗?如果是这样,我可以将 cwd 设置为 $workspaceRoot\..(在 windows 上)【参考方案7】:将当前工作目录设置为您当时正在执行的任何文件:
文件 > 首选项 > 设置 > Python > 数据科学 > 在文件目录中执行
谢谢brch:Python in VSCode: Set working directory to python file's path everytime
【讨论】:
以上是关于VSCode -- 如何设置调试工作目录的主要内容,如果未能解决你的问题,请参考以下文章
如何在VSCode上更改Python(Anaconda)的默认工作目录?