最基础服务只需一行命令:python -m http.server 8000,启动后本机访问http://localhost:8000,局域网设备用http://本机IP:8000访问,前提是Python 3.6+已安装且防火墙放行端口。

能,而且只要一行命令、不装包、不写代码,5 秒内就跑起来——前提是 Python 3.6+ 已装好,且网络和防火墙没拦你。
怎么启动最基础的服务
进到你想共享的文件夹里,直接执行:
python -m http.server 8000
终端会输出 Serving HTTP on :: port 8000,说明服务已就绪。此时本机可通过 http://localhost:8000 访问;局域网其他设备则需用你的真实局域网 IP(比如 http://192.168.1.123:8000)访问。
- 端口别硬刚
80或443:需要 root/admin 权限,普通用户起不来 - Windows 用户注意:必须先
cd D:share再运行命令,--directory在旧版 Python(如 3.6)里不支持 - macOS/Linux 用户可直接用
python3 -m http.server 8000,python命令可能指向 Python 2
--bind 和 --directory 参数怎么用才不踩坑
这两个参数从 Python 3.7 开始支持,但不是所有环境都默认启用。加了 --bind 能明确控制谁可以连,--directory 则绕过 cd 步骤。
立即学习“Python免费学习笔记(深入)”;
-
--bind 127.0.0.1:8000:只允许本机访问,适合预览 HTML 页面,避免被同事误点 -
--bind 0.0.0.0:8000:显式监听所有网卡,局域网设备才能连上——很多连不上问题,就是默认绑了::(IPv6 回环)却没开 IPv6 或防火墙拦截了 -
--directory /path/to/share:路径中含空格要用引号包裹,Windows 下推荐正斜杠D:/data或双反斜杠D:\data,单反斜杠会被当作转义符 - 参数顺序无关:
python -m http.server --directory ./files 9000和python -m http.server 9000 --directory ./files效果一样
为什么手机/其他电脑打不开?优先排查这三点
不是命令错了,而是网络链路断在中间。常见断连原因按优先级排序:
- 防火墙拦了端口:Windows Defender、macOS 防火墙、Linux
ufw默认会拦新端口,必须手动放行你用的端口(如 8000) - 不在同一局域网:手机连的是 5G 热点,电脑连的是公司 WiFi —— 这俩根本不通,必须共用一个路由器或热点
- IP 地址填错:别用
127.0.0.1,得用真实局域网 IPv4 地址。Windows 执行ipconfig,macOS/Linux 执行ifconfig | grep "inet ",找以192.168.或10.0.开头的那个 - 杀毒软件劫持:某些国产安全软件会静默拦截 Python 启动的 HTTP 服务,临时退出试试
后台运行和干净退出的关键操作
关终端就断服务,想让它常驻?别用 nohup 硬扛,容易留僵尸进程。
- Linux/macOS 后台启动:
python -m http.server 8000 --bind 0.0.0.0 > /dev/null 2>&1 &,末尾&是关键 - Windows 没有原生后台机制,可用
start /min python -m http.server 8000最小化窗口运行 - 干净退出:找到对应
python进程 PID(ps aux | grep http.server),用kill -9 PID杀掉;Windows 用taskkill /PID XXXX /F - 别忽略日志重定向:
> /dev/null 2>&1避免 stdout/stderr 堆积,否则后台进程可能因管道满而卡死
真正麻烦的从来不是启动命令本身,而是你没意识到 0.0.0.0 和 :: 的绑定差异、防火墙策略对新端口的默认拦截逻辑、以及不同 Python 版本对 --directory 的支持断层——这些细节一漏,服务就“看起来跑起来了,实际谁也连不上”。


















