如何在vscode中设置环境变量以进行调试?

7

我有一个相当大的Python/C++程序,运行方式如下:

  1. . set_env.sh -option A -option B
  2. python run.py

set_env.sh脚本修改PYTHONPATH并进行所有导出,以指向正确的C++程序。 在终端中运行这两个命令时,一切都很顺利,但是使用调试器会破坏一切。

我尝试在preLaunchTask中运行“. set_env.sh -option A -option B”,但似乎调试器无法看到新的PYTHONPATH。

我该如何使调试器运行set_env并考虑新的PYTHONPATH?

2个回答

5

受我目前从事Python的工作启发。

这是我为Flask所做的。

展示图片说明

微软链接

https://code.visualstudio.com/docs/python/debugging

针对任何常规的Python调试

展示图片说明

证据

import os

for key in os.environ.keys():
    print(f"{key}={os.environ.get(key)}")


在VS Code中执行F5,打开包含上述代码片段的文件后:enter image description here 2月18日更新:
收到一条评论后,我认为OP想在调试Fask应用程序之前运行脚本。下面是对我有效的步骤。
概述:
最终我得到了以下文件:
- 添加一个PowerShell文件“dosomething.ps1”(我的自定义脚本,我打算在每个调试会话之前启动它) - 添加一个“task.json”(启动dosomething.ps1) - 通过将其与“task.json”中的任务链接来编辑现有的“launch.json”enter image description here 文件“dosomething.ps1”:
Write-Host "Inside do something"
Write-Host "The value of the environment variable TEMP is $env:TEMPcls"
Write-Host "The current path of the script is $PSScriptroot"

The file tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "my script task",
            "type": "shell",
            "windows": {
                "command": "pwsh -f dosomething.ps1"
            },
            "problemMatcher": []
        }
    ]
}

将launch.json与task.json进行链接

图片描述信息

按下F5后

图片描述信息


这与@fitzberg的答案相同,但它不起作用,因为必须在每个调试会话之前启动脚本set_env.sh :/ - Welgriv
@Welgriv 请查看我对原回答的更新(标记为2月18日的部分)。在启动Fast Debugger之前,我正在运行一个PowerShell脚本。 - Sau001
我无法验证这在Windows上是否有效,但在Mac上脚本将运行,但调试器命令将无法运行并等待附加。 - Fatlad

5

我们已经接近解决方案了,但由于必须在每个调试会话之前启动脚本 set_env.sh,所以它无法正常工作 :/ - Welgriv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接