我试图从mac终端设置一个python服务器。

我导航到文件夹位置使用:

python -m SimpleHTTPServer

但这给了我错误:

socket.error: [Errno 48] Address already in use

我以前使用相同的命令打开了一个连接 在我的电脑里的不同位置的一个不同的网站。


当前回答

对于任何开发人员来说,这都是常见的用例。

最好在您的本地系统中使用它。(所以最好把这个脚本保存在一个shell配置文件中,比如ksh/zsh或bash配置文件,这取决于用户的偏好)

function killport {
   kill -9 `lsof -i tcp:"$1" | grep LISTEN | awk '{print $2}'`
}

用法:

killport port_number

例子:

killport 8080

其他回答

我有一个树莓派,我使用python web服务器(使用Flask)。我已经尝试了上面的所有方法,唯一的解决方案是关闭终端(shell)并再次打开它。或者重新启动树莓派,因为没有什么可以停止web服务器……

返回此错误是因为试图在项目仍在运行时重新运行该项目。停止并重新启动项目。

我是Python的新手,但经过简单的研究后,我发现这是典型的套接字被绑定。碰巧该套接字仍在使用,您可能需要等待才能使用它。或者,你可以添加:

tcpSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

这将使端口在更短的时间内可用。在我的例子中,它几乎立即使端口可用。

对于任何开发人员来说,这都是常见的用例。

最好在您的本地系统中使用它。(所以最好把这个脚本保存在一个shell配置文件中,比如ksh/zsh或bash配置文件,这取决于用户的偏好)

function killport {
   kill -9 `lsof -i tcp:"$1" | grep LISTEN | awk '{print $2}'`
}

用法:

killport port_number

例子:

killport 8080

以防上述解决方案不起作用:

获取进程正在侦听的端口: $ ps ax | grep python 终止进程 $ kill PROCESS_NAME