启动 Python 后端服务,啪一下弹出来:

OSError: [WinError 10048] ... only one usage of each socket address

这不是代码问题,是端口被别人占了

报错现象

socket.error: [Errno 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次

服务起不来,换个端口可能就正常。

原因分析

上次运行的服务进程没退干净(比如被强制关闭、ctrl+c 没杀死子进程),端口一直被占着,新服务抢不到。

解决步骤

方案一:杀掉占用进程

# 找到占用 5000 端口的 PID
netstat -ano | findstr :5000

# 得到类似   TCP 0.0.0.0:5000  0.0.0.0:0  LISTENING  12345
# 最后那个 12345 就是 PID,结束它
taskkill /PID 12345 /F

方案二:更换空闲端口

如果那个进程不能杀(比如是别的服务在跑),改项目配置换端口:

# 例如 Flask / FastAPI / uvicorn
uvicorn app:app --port 5001

效果验证

  • 服务正常启动,控制台打印监听地址
  • 浏览器访问 http://localhost:端口 能通

排错速查表

现象处理
10048 端口占用netstat 找 PID → taskkill
端口是别的服务换空闲端口启动
重启后仍占用检查是否有残留 Python 进程

核心经验:10048 先查端口再查代码netstat -ano | findstr :端口 是 Windows 下最快的一行诊断。