如何使用 Visual Studio Code 单步执行依赖项代码?

pha*_*ebz 7 python debugging visual-studio-code

在调试我的用户代码时,我想进入安装的依赖项的代码,例如使用pip install -e path/to/package.

我试图在项目中找到一个列出依赖项的位置,并且可以浏览它以打开源文件进行调试(例如,这可以在 PyCharm 中通过“外部库”部分实现)。

我想单步进入并通过依赖项代码,但找不到方法来执行此操作。

Gin*_*pin 8

通过内置的调试配置应该可以实现。据我所知,唯一不可能的情况是 Python 依赖项是 C 代码(例如 OpenCV、pygame),因为它们存储为.so文件而不是 Python 文件。

\n\n

假设我有这样的结构:

\n\n
main\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test.py\npkgs\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mypkg\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 moduleA.py\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup.py\n
Run Code Online (Sandbox Code Playgroud)\n\n

mypkg基于Python 文档中的打包 Python 项目示例创建。然后我使用您提到的相同命令将其安装在我的环境中:

\n\n
pip install -e /path/to/mypkg\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 test.py 我有这个:

\n\n
import moduleA\nmoduleA.add_two_num(1, 2)\n
Run Code Online (Sandbox Code Playgroud)\n\n

首先,确保将 VSCode 解释器设置为使用与安装位置相同的环境mypkg。请参阅从 VSCode 文档中选择并激活环境。

\n\n

接下来,为 test.py创建调试配置:

\n\n
{\n    "name": "test",\n    "type": "python",\n    "request": "launch",\n    "cwd": "${workspaceFolder}",\n    "program": "/path/to/test.py",\n    "pythonPath": "/path/to/.virtualenvs/test-py37/bin/python",\n    "console": "integratedTerminal",\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这里再次重要的是设置pythonpath为指向python您安装的位置mypkg。这里我使用一个名为 的 virtualenv test-py37

\n\n

现在,在外部包所在行设置一个断点:

\n\n

断点

\n\n

然后启动调试器(F5在“调试”面板中按或选择它,然后按“播放”按钮)。当调试器在断点处停止时:\n步入

\n\n

只需按“Step Into”按钮(或F11),VS Code 就会将您带到外部依赖项的代码。您还可以直接在 VS Code 上打开文件,然后在其上放置断点。一旦它在编辑器中打开,下次调试时,它就会在这些断点处停止。

\n\n

依赖断点

\n


Rah*_*yal 7

justMyCode在 launch.json 文件中禁用。默认情况下启用此功能。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Module",
            "type": "python",
            "request": "launch",
            "module": "my_package",
            "justMyCode": false
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这帮助我解决了 Studio 版本的问题:1.63.2(通用)