如何使用 virtualenv 在 VS Code 中调试 python?再次

How to debug python in VS Code with virtualenv? Again

我正在尝试在 venv 中调试一个非常简单的脚本,但 Python 调试器拒绝开始工作。

Python 扩展版本是 Windows 10 x64 上的 2019.10.41019。

python 版本是 3.7.1 32 位。

没有虚拟环境的调试工作正常。然后我在C:\TMP\PYENV中创建了一个venv,在launch.json:

中添加了一个配置
{
    "name": "Python: PYENV",
    "type": "python",
    "request": "launch",
    "program": "${file}",
    "console": "integratedTerminal",
    "pythonPath": "C:\TMP\PYENV\Scripts\python.exe",
},

并开始调试它。终端输出:

c:\TMP\PYENV>C:/TMP/PYENV/Scripts/activate.bat
(PYENV) c:\TMP\PYENV>C:\TMP\PYENV\Scripts\python.exe c:\Users\user\.vscode\extensions\ms-python.python-2019.10.41019\pythonFiles\ptvsd_launcher.py --default --client --host localhost --port 53150 c:\TMP\PYENV\myscript.py

脚本启动,找到了 venv 中的所有本地导入 - 但我的所有断点都被忽略了。脚本运行(并在某处崩溃)。

少了什么??

我搜索了相关问题和大多数建议,以使用 "python.pythonPath" 定义配置。但这在当前版本中不再有效。它应该是 "pythonPath" 就像我上面的例子一样,或者 VS 代码(或 python 扩展名?)抱怨无效名称。

这是因为您将源代码放在虚拟环境中,这使得调试器认为这不是您的代码而是第三方代码。只需将代码移出即可。或者,您可以 set "justMyCode": true 在您的调试器配置中,然后它将跟踪 所有 代码,而不仅仅是调试器认为您自己的代码。