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

ddb*_*bug 6 python virtualenv visual-studio-code

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

Windows 10 x64 上的 Python 扩展版本为 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",
},
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

缺什么??

我搜索了相关问题和大多数建议来使用“python.pythonPath”定义配置。但这在当前版本中不再有效。它应该是“pythonPath”,如我上面的示例所示,否则 VS Code(或 python 扩展?)会抱怨名称无效。

Bre*_*non 10

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

  • 布雷特,非常感谢你!在其他回复中,我看到了诸如“不要放入他 venv”之类的建议,但没有解释原因。我欠你一杯啤酒。 (2认同)