WinError 10013 错误解决(Python)

一、错误描述

在 Windows 操作系统上运行 Python 网络相关程序(如 Web 服务、Socket 服务、FastAPI、Flask、Uvicorn、Django 等)时,程序启动失败,控制台输出如下错误信息:

ERROR: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。

该错误表明:
当前 Python 进程在尝试绑定或访问某个端口时,被操作系统拒绝,原因通常与端口权限、端口占用或系统安全策略有关。

需要注意的是PC端微信进行视频语音通话时会占用一个8000端口,同时在MacOs系统下5000、7000端口都会被系统占用(隔空投送等功能)

二、常见触发场景

该错误通常出现在以下场景中:

  1. 使用 Uvicorn / FastAPI / Flask 启动 Web 服务
  2. 使用 socket 模块手动绑定端口
  3. 使用受系统限制的端口号
  4. 端口被其他进程或系统服务占用
  5. Windows 防火墙或安全软件拦截

示例(可能触发错误):

uvicorn main:app --host 0.0.0.0 --port 80

或:

socket.bind(("0.0.0.0", 80))

三、错误原因分析

原因 1:使用了系统受限端口(1–1023)

在 Windows 系统中,1–1023 端口属于系统保留端口,普通用户无权限绑定。

常见受限端口示例:

端口 说明
80 HTTP
443 HTTPS
21 FTP
22 SSH

原因 2:未使用管理员权限运行程序

即使端口本身可用,如果当前命令行窗口不是以管理员身份运行,也可能无法创建套接字。


原因 3:端口已被其他进程占用

端口可能已被以下服务占用:

  • IIS
  • Docker / Docker Desktop
  • MySQL / Redis
  • 其他 Python 服务
  • WSL 或虚拟机服务

原因 4:Windows 防火墙或安全软件拦截

包括但不限于:

  • Windows Defender 防火墙
  • 第三方安全软件
  • 企业级安全策略

四、解决方案(按推荐顺序)


方案一:更换为高位端口(推荐)

将端口修改为 1024 以上端口,例如:

8000
8080
5000
3000

示例:

uvicorn main:app --host 0.0.0.0 --port 8000

或代码中:

app.run(port=5000)

方案二:使用管理员权限运行命令行

  1. 右键 CMD 或 PowerShell
  2. 选择“以管理员身份运行”
  3. 重新执行 Python 程序

方案三:检查并释放端口占用

1. 查看端口占用情况
netstat -ano | findstr :8000

示例输出:

LISTENING    12345

其中 12345 为进程 PID。

2. 结束占用端口的进程
taskkill /PID 12345 /F

方案四:关闭或调整相关系统服务

IIS 服务
iisreset /stop

或通过以下路径关闭:

  • 控制面板 → 程序 → 启用或关闭 Windows 功能
  • 取消勾选 Internet Information Services
Docker 服务
  • 检查容器端口映射情况
  • 临时关闭 Docker Desktop 进行验证

方案五:配置 Windows 防火墙放行端口

  1. 控制面板 → Windows Defender 防火墙
  2. 高级设置 → 入站规则
  3. 新建规则 → 端口 → TCP
  4. 放行指定端口(如 8000)

五、典型应用场景修复示例

FastAPI + Uvicorn

错误示例:

uvicorn main:app --port 80

正确示例:

uvicorn main:app --port 8000

Flask

app.run(host="0.0.0.0", port=5000)

Socket 程序

s.bind(("127.0.0.1", 9000))

六、快速自检清单

  • 是否使用了 1024 以上端口
  • 是否以管理员权限运行
  • 端口是否已被占用
  • 防火墙是否阻止访问

七、总结

WinError 10013 的根本原因在于:
Windows 系统拒绝当前进程以当前权限绑定指定端口。

最有效的解决方式包括:

  1. 使用高位端口(如 8000、8080)
  2. 必要时以管理员权限运行程序

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐