You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL环境下VSCode+Python3.10连接localhost出现连接拒绝的原因及解决办法

WSL中Python程序连接localhost出现ERR_CONNECTION_REFUSED的原因及解决方法

可能的原因

  • Python服务未正常启动:程序运行时抛出异常、代码逻辑错误,导致服务没能成功监听端口
  • 监听地址设置错误:代码里绑定的是127.0.0.1(仅WSL本地可访问),Windows主机无法通过localhost访问该服务
  • WSL网络端口转发失效:WSL2采用NAT网络模式,端口转发机制异常导致Windows无法映射到WSL内部端口
  • 端口被占用:目标端口被WSL或Windows系统中的其他进程占用,Python服务无法启动监听
  • 防火墙拦截:Windows防火墙或WSL内部的UFW防火墙阻止了端口的入站连接

对应的解决方法

  • 检查服务启动状态
    • 运行Python程序后查看终端输出,确认没有报错信息,服务正常启动
    • 在WSL终端执行netstat -tulpn | grep <你的端口号>,确认端口处于LISTEN状态
  • 修改监听地址
    • 将代码中的监听地址从127.0.0.1改为0.0.0.0,让服务监听所有网络接口,示例如下:
      # 以Flask为例,其他框架逻辑类似
      from flask import Flask
      app = Flask(__name__)
      
      @app.route('/')
      def index():
          return "Connected successfully!"
      
      if __name__ == '__main__':
          app.run(host='0.0.0.0', port=5000)  # host设为0.0.0.0
      
  • 重置WSL网络
    • 在Windows CMD执行wsl --shutdown,关闭所有WSL实例后重新打开,自动修复端口转发
    • 若重启无效,手动配置端口转发:先在WSL终端用hostname -I获取内部IP,然后在Windows CMD执行netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=<端口号> connectaddress=<WSL内部IP> connectport=<端口号>
  • 调整防火墙规则
    • 临时关闭Windows防火墙测试,若能连接则添加对应端口的入站允许规则
    • WSL内部执行sudo ufw status,若UFW开启,执行sudo ufw allow <端口号>放行端口
  • 释放被占用的端口
    • 在WSL终端执行lsof -i :<端口号>找到占用进程的PID,再执行kill -9 <PID>终止进程,之后重启Python服务

内容的提问来源于stack exchange,提问作者darthvader

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:15:43