VS-Code Python调试 - ConnectionRefusedError: [WinError 10061] 由于目标机器主动拒绝而无法建立连接

And*_* L. 6 python-3.x connection-refused visual-studio-code vscode-debugger

我想像Python往常一样通过按VS-Code下来调试我的本地代码:Windows 10F5

调试设置 VS-Code 侧栏

我一年多前就开始出现这个错误,但最近它变得持续存在。

整个错误回溯:

$  /usr/bin/env 'DEBUGPY_LOG_DIR=c:\Users\username\.vscode\extensions\ms-python.python-2021.8.1105858891' c:\\Users\\username\\Projects\\project-venv\\Scripts\\python.exe c:\\Users\\username\\.vscode\\extensions\\ms-python.python-2021.8.1105858891\\pythonFiles\\lib\\python\\debugpy\\launcher 56721 -- c:\\Users\\username\\Projects\\project\\test_files\\prediction_performance_monitoring\\modified_app_for_docker_testing.py
Traceback (most recent call last):
  File "C:\Users\username\.pyenv\pyenv-win\versions\3.8.9\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\username\.pyenv\pyenv-win\versions\3.8.9\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "c:\Users\username\.vscode\extensions\ms-python.python-2021.8.1105858891\pythonFiles\lib\python\debugpy\launcher\__main__.py", line 97, in
<module>
    main()
  File "c:\Users\username\.vscode\extensions\ms-python.python-2021.8.1105858891\pythonFiles\lib\python\debugpy\launcher\__main__.py", line 53, in
main
    launcher.connect(host, port)
  File "c:\Users\username\.vscode\extensions\ms-python.python-2021.8.1105858891\pythonFiles\lib\python\debugpy\launcher/../..\debugpy\launcher\__init__.py", line 34, in connect
    sock.connect((host, port))
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it
Run Code Online (Sandbox Code Playgroud)

.vscode/launch.json本地文件测试的调试配置包含以下设置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File (Integrated Terminal)",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "python": "C:\\Users\\andreas.luckert\\Projects\\project-venv\\Scripts\\python.exe",
            "redirectOutput": true,
            "justMyCode": false,
            "logToFile": true,
            "stopOnEntry": false,
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

在 StackOverFlow 上搜索该问题时出现了类似的问题,但答案(此处类似的问题)大多陈述了类似于

WinError 10061 - 表示服务器端 TCP 不接受连接。因为上面没有应用程序正在侦听客户端尝试连接的该端口。请检查您的服务器应用程序是否已启动并且它正在侦听预期的端口。

然而,这对我没有帮助,因为问题涉及一些远程连接,但就我而言,调试过程是在本地进行的。而且,我没有对上述配置进行任何更改,一周前它还可以正常工作。

像这里这样的其他答案包括防火墙困难,例如

服务器上是否运行防火墙?如果是这样,则可能会阻塞连接。您可以禁用防火墙或在服务器端添加例外以允许端口 8000 上的连接。

我不知道我的防火墙应该如何阻止这个调试过程,特别是因为它不是一个持续的问题,而是不规则地出现和消失。有时我认为这与免费 RAM 暂时短缺有关,但事实证明这是一个错误的假设。

总的来说,我无法VS-Code Python debugging 再明智地与他们一起工作。由于这是我工作流程中不可或缺的一部分,因此我需要找出如何解决这个问题。

And*_* L. 6

我需要将默认的 VS-Code 内部终端配置文件设置Command Prompt

VS Code 的屏幕截图显示打开终端,然后选择下拉箭头单击“选择默认配置文件”并更改为命令提示符 (cmd)

(或者键入F1(或Ctrl+Shift+P)并键入“终端:选择默认配置文件”,键入Enter,然后使用向上/向下箭头选择命令提示符选项,然后Enter再次键入,如此处所示

这样,VS-Code 交互式调试器就会选择“cmd”-shell,而不是之前的“git-bash”。

罪魁祸首是/usr/bin/env自动生成的python.exe- 调用的开头部分,该调用仅在git-bash- shell 中前置,但不在 中cmd

$  /usr/bin/env 'DEBUGPY_LOG_DIR=c:\Users\username\.vscode\extensions\ms-python.python-2021.8.1105858891' c:\\Users\\username\\Projects\\project-venv\\Scripts\\python.exe c:\\Users\\username\\.vscode\\extensions\\ms-python.python-2021.8.1105858891\\pythonFiles\\lib\\python\\debugpy\\launcher 56721 -- c:\\Users\\username\\Projects\\project\\test_files\\prediction_performance_monitoring\\modified_app_for_docker_testing.py
Run Code Online (Sandbox Code Playgroud)

由于某种未知原因,本地防火墙阻止了此操作;在我的 Ubuntu 20.04 和 Windows 10 机器上。

我想有一种方法可以解决这个问题,但现在我不介意将 Windows 原生Command Prompt作为 VS-Code 中的默认内部终端。我可以同时打开多种终端类型,并利用它们的不同功能来发挥我的优势:

在此输入图像描述

事实上,找到这个解决方案是一个游戏规则的改变者,因为以前这WinError: 10061经常阻止我有效地使用 VS-Code。