[英]Visual Studio does not use current PTVSD version
我使用 Visual Studio 2017 (V15.8.9) 和 python 工具。 当我尝试使用 ptvsd 进行远程调试时,我看到了不同的版本,具体取决于我导入 ptvsd 的位置。
在我当前环境的 visual studio 中打开 python 控制台并import ptvsd
时,我总是得到安装在%ProgramFiles(x86)%\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\ptvsd\
中的版本 3.2.1.0 %ProgramFiles(x86)%\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\ptvsd\
。
如果我在python环境下安装ptvsd,当前版本4.2.0就正确安装了。 但是当我重复上面的导入语句时,我仍然看到版本 3.2.1.0。 安装在核心中的包版本似乎覆盖了环境中安装的较新包。
在远程机器上安装并使用了当前版本的 PTVSD。 这会导致版本不匹配。
在两台机器上使用 PTVSD 3.2.1 时,visual studio 在开始调试时会抱怨本地机器上会安装更新的版本 (4.1.1a9)。
几个星期以来,我一直在与 VS2017 中过时的 PTVSD 的明显问题作斗争。 我经常尝试更新 Visual Studio 本身(当前为 15.9.9),但仍然出现随机崩溃,通常涉及KeyError: 'matplotlib.pyplot
,以及其他挂起和无法击中断点的故障,直到我发现:
我使用这些步骤将 ptvsd 从 V3.2.1 升级到 V4.2.4,之后我的 Python 调试问题已经消失了:
Select the Python environment used for your project
(这从说明中看不出来)。ptvsd --upgrade
,然后选择运行命令: pip install ptvsd --upgrade
。 (您也可以在 PowerShell 中使用相同的命令。)使用遗留调试器。 这是与 Python 3.4 和 Microsoft Visual Studio 2017 和 2019 结合使用对我来说唯一有效的选项。遗憾的是,Microsoft 完全放弃了对 ptvsd 调试器的支持与 Visual Studio 2022。
要启用旧版调试器,请转到Debug -> Options... -> Python -> Debugging
并选中Use legacy debugger
。 在 VS2017 和 VS2019 中,legacy debugger 都是基于ptvsd 3.2.1.0
(有一些辅助脚本参考 3.1 和 3.2)。 在附加到正在运行的 Python 进程之前,您需要在 Python 项目中导入该文件。
它出现在微软的文档中(参见https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2017/python/debugging-python-in-visual-studio?view=vs-2017 #use-the-legacy-debugger ) 和 Visual Studio 2017 附带的调试器的源代码,Visual Studio 2017 中内置的 Python 调试器基于 ptvsd 4.1.1a9 调试器。 在我的 VS2017(专业版)发行版中,Visual Studio 2017 中使用的最新 Python 调试器实际上位于%ProgramFiles(x86)%\microsoft visual studio\2017\Professional\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\
,(参见_version.py
)。 但是,尝试使用 ptvsd 4.1.1a9、4.1.1 或更新版本(如 4.3.2)会导致无法连接到要调试的 Python 进程,或者导致 Visual Studio 频繁冻结。 我会把这种调试器支持命名为高度实验性的。
从 Visual Studio 2019 开始,微软显然放弃了对当时最新版本的debugpy
的支持,转而支持他们选择作为默认 Python 调试器的 debugpy。 在某些情况下(例如 Python 3.4,debugpy 永远不可用),唯一的选择就是使用旧版调试器。 遗留调试器与 Visual Studio 2017 中的相同,即 ptvsd 3.2.1.0。
你确实是对的,Visual Studio 中内置的旧版 ptvsd 存储在%ProgramFiles(x86)%\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\ptvsd\
(将2017
替换为2019 用于 VS2019 和Professional
(使用您的 VS 版本)。 导入 ptvsd 时,此包会自动导入任何 Python 交互窗口,无论目标 Python 环境中安装了哪个版本——我想这是一个错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.