使用 vscode 调试时如何执行设置 python 虚拟环境的 shell 脚本(我需要对 launch.json 进行哪些更改)

how to execute a shell script which sets up the python virtual environment when debugging with vscode ( What changes do i need to make to launch.json)

所以我在 visual studio 内部代码中使用 vscode-remote 但我认为我面临的问题是 vscode-python 扩展。

所以我正在尝试调试 python 文件。 所以正常执行文件如下:

我使用以下命令启用或激活虚拟环境:

source $HOME/.enn/enn.sh

但是我在 shell 文件中看到的虚拟环境路径是:/home/ubuntu/venv/enn 和 python路径是 /home/ubuntu/venv/enn/bin/python

所以它是一个 shell 文件,它激活相关的虚拟环境并设置环境变量,如 export DOMAIN_ENDPOINT=http://s3.us-west-2.amazonaws.com

然后我进入相关目录并执行python命令:

python session_server.py --config_file=../path/to/file/test_config.hocon

这有效。

但是当我尝试调试时它开始出现导入错误。 所以我认为在调试模式下没有设置环境变量,也没有激活 python 虚拟环境。如何设置要设置的 python 虚拟环境和环境变量也设置。所以我基本上要问的是如何在使用 vscode

调试期间执行相同的 shell 命令 - source $HOME/.enn/enn.sh

我的 launch.json 是

{

    "version": "0.2.0",
    "configurations": [

        {
            "name": "Python: ennsession_server",
            "type": "python",
            "request": "launch",
            "program": "/home/ubuntu/path/to/file/session_server.py",
            "console": "integratedTerminal",
            "pythonPath" : "/home/ubuntu/venv/enn/bin/python",
            "cwd" : "/home/ubuntu/path/to/directory/experiment",
            "args": ["--config_file=../path/to/file/test_config.hocon"]


        }
    ]
} 

而且我在 settings.json 中为 vscode 指定了一个 python 路径作为 /home/ubuntu/venv/enn/bin/python 所以在调试时 vscode 调用了一个自动命令source /home/ubuntu/venv/enn/bin/activate。我不想调用它,但我希望在调试或打开新终端时调用命令 source $HOME/.enn/enn.sh。我该怎么做?

目前无法在 Python 调试器下执行 shell 脚本,因为调试器本身需要启动 Python 代码本身。如果 shell 脚本正在激活虚拟环境和环境变量,那么您可以让扩展程序在调试时代表您执行此操作。

您可以为 this feature request 投票以获得您想要的功能。