https://www.logcg.com/archives/536.html
粘贴原文防止丢失
Mac OS X中解决socket.error: [Errno 48] Address already in use 端口占用问题
关闭pycharm时 申请的端口号并不会被释放, 因为后台的python 一直在运行
这里有个暂时的方法直接找到对应的端口号启用的pid 然后kill掉
原因
其实就是因为你曾启动过相同或者类似的服务占用了这个端口,一般来讲,在Mac上直接用Python启动的话,会导致退出不完整,你不能通过点击GUI的“退出”按钮来一步到位,后台的Python进程还是存在的,而它就是一直占用端口不释放的元凶。
解决办法
一个是改掉默认的8087、8086端口,另一个,就是干掉占用端口的程序。
前者立竿见影,但缺点是你总不能一天换一个的吧,如果说是因为其他应用占用端口还好说,那要是因为退出不完整呢?所以,后者才是治标治本的解决办法。但是想要找到这个占用端口的程序,就要引入下面的内容了:
lsof命令
lsof(list open files)命令是一个列出当前系统打开文件的工具。在类UNIX环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以我们使用它来找出占用了端口的程序,看看它究竟是不是冲突是不是错误。
lsof -i 用以显示符合条件的进程情况
所以,我们使用如下命令即可查找出占用了某个端口的程序和其对应的PID
sudo lsof -i:8087
//因为有些时候是以root身份运行,所以请务必加上sudo
然后使用下面的命令干掉对应的进程:
sudo kill *pid*//*部分用对应进程的PID来填充哦
网友评论