我试图从mac终端设置一个python服务器。
我导航到文件夹位置使用:
python -m SimpleHTTPServer
但这给了我错误:
socket.error: [Errno 48] Address already in use
我以前使用相同的命令打开了一个连接 在我的电脑里的不同位置的一个不同的网站。
我试图从mac终端设置一个python服务器。
我导航到文件夹位置使用:
python -m SimpleHTTPServer
但这给了我错误:
socket.error: [Errno 48] Address already in use
我以前使用相同的命令打开了一个连接 在我的电脑里的不同位置的一个不同的网站。
当前回答
返回此错误是因为试图在项目仍在运行时重新运行该项目。停止并重新启动项目。
其他回答
我有一个树莓派,我使用python web服务器(使用Flask)。我已经尝试了上面的所有方法,唯一的解决方案是关闭终端(shell)并再次打开它。或者重新启动树莓派,因为没有什么可以停止web服务器……
简单的解决方案:
查找使用端口8080的进程:
sudo lsof -i:8080
终止该端口上的进程:
kill $PID
kill -9 $PID //to forcefully kill the port
PID从步骤1的输出中获得。
您可以使用allow_reuse_address允许服务器重用一个地址。
服务器是否允许重用地址。默认为False,可以在子类中设置以更改策略。
import SimpleHTTPServer, SocketServer
PORT = 8000
httpd = SocketServer.TCPServer(("", PORT), SimpleHTTPServer.SimpleHTTPRequestHandler)
httpd.allow_reuse_address = True
print "Serving at port", PORT
httpd.serve_forever()
对于任何开发人员来说,这都是常见的用例。
最好在您的本地系统中使用它。(所以最好把这个脚本保存在一个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