如何解决Python Bottle Web框架中端口已被占用的错误?
解决Bottle框架中端口已被占用的问题
嘿,我来帮你搞定这个端口被占用的问题!你遇到的情况很常见——默认的8080端口大概率已经被其他程序(比如另一个服务、之前没关干净的Bottle进程)占用了,下面几个办法都能解决:
1. 手动指定一个未被占用的端口
最简单的方式就是在启动Bottle的时候,给run()方法指定一个新的端口号,比如换8081、9000这类没被用的端口:
from bottle import route, run @route('/') def index(): return "olá pessoas" if __name__ == '__main__': run(port=8081) # 替换成你想使用的空闲端口
这样启动后,服务就会跑在你指定的端口上,不会再和其他程序抢8080了。
2. 释放被占用的8080端口
如果你非要用8080端口,可以先找出占用它的进程,然后结束掉:
- Linux/macOS终端:先用下面的命令查看占用进程:
找到输出里的lsof -i :8080PID(进程ID),再用kill命令杀掉它:kill -9 <你的PID> - Windows系统:打开命令提示符,输入:
找到对应的PID后,打开任务管理器,在“详细信息”里找到这个PID的进程,右键结束任务即可。netstat -ano | findstr :8080
3. 让Bottle自动分配空闲端口
不想手动选端口?可以让Bottle自动找一个可用的端口,只需要把port设为0:
from bottle import route, run @route('/') def index(): return "olá pessoas" if __name__ == '__main__': server = run(port=0, debug=True) # 打印出实际使用的端口地址 print(f"服务已启动,访问地址:http://{server.srv[1][0]}:{server.srv[1][1]}")
启动后,Bottle会自动选一个空闲端口,你直接用打印出来的地址访问就行。
4. 检查残留的Bottle进程
有时候你之前启动的Bottle程序可能没完全关闭,后台进程还在占用端口。用上面的进程查找命令,把残留的Bottle进程杀掉,再重新启动你的程序就好啦。
内容的提问来源于stack exchange,提问作者Reinaldo Chaves
相关产品推荐
相关产品推荐

