关闭终端后重启Django服务器提示端口被占用,如何解决?
解决Django服务器端口被占用(Error: That port is already in use)的问题
别急,这个问题其实超常见——你直接关掉运行服务器的终端窗口时,Django的服务器进程并没有正常退出,它还在后台偷偷占用着8000端口呢。下面分操作系统给你讲具体的解决办法:
macOS 或 Linux 系统
第一步:找到占用8000端口的进程ID(PID)
打开新终端,运行以下命令之一:lsof -i :8000或者
netstat -tulpn | grep :8000执行后你会看到类似这样的输出,其中PID列的数字就是你要找的进程号:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python 1234 yourname 4u IPv4 12345 0t0 TCP *:8000 (LISTEN)第二步:强制终止这个进程
把上面找到的PID替换到命令里,比如PID是1234,就运行:kill -9 1234这个命令会强制终止占用端口的进程,之后再运行
python manage.py runserver就正常了。
Windows 系统
第一步:找到占用8000端口的进程ID(PID)
打开命令提示符(CMD)或PowerShell,运行:netstat -ano | findstr :8000输出里最后一列的数字就是PID,比如:
TCP 127.0.0.1:8000 0.0.0.0:0 LISTENING 1234
第二步:强制结束进程
把PID替换到命令中,运行:taskkill /F /PID 1234/F参数表示强制终止,执行完之后再启动服务器就没问题了。
临时应急方案
如果你懒得找进程,也可以直接指定其他端口启动Django服务器,比如用8001端口:
python manage.py runserver 8001
之后访问http://127.0.0.1:8001/就能正常打开网站了,不过这只是临时办法,还是建议把占用8000端口的进程杀掉,避免后续再遇到同样问题。
内容的提问来源于stack exchange,提问作者Justin




