pip 不支持断点续传,因其底层 urllib/requests 未实现 range 请求头,中断后缓存文件无法识别为可续传片段;推荐用 wget -c 或 curl -c - 手动下载 whl 后离线安装。

pip install 为什么不能断点续传
因为 pip 默认使用的 urllib 或 requests 底层不带 Range 请求头支持,下载中断后临时文件(pip 存在缓存目录里)无法被识别为“可续传片段”,重试时直接覆盖或报错。这不是 bug,是设计取舍——pip 更侧重多源索引、依赖解析和 wheel 构建,不是下载器。
用 wget / curl 手动下载 whl 后离线安装
这是最可控、兼容性最好的方式,尤其适合内网或网络极不稳定的环境。
- 先用
pip install --dry-run --no-deps -v package_name查出真实下载链接(注意看最后几行的Looking in indexes和Downloading行) - 把链接粘贴进
wget -c URL(-c即续传)或curl -C - -L -o file.whl URL - 下载完成后,用
pip install ./file.whl安装,不联网、不查索引、不升级依赖 - 如果包有 C 扩展且你没对应编译环境,优先下载
manylinux或win_amd64标签的 wheel,别下source distribution (.tar.gz)
改用 pip-accel 或 pipx + 自定义缓存路径
这类工具不解决续传本身,但能大幅降低重复下载概率,间接减少中断影响。
-
pip-accel会把构建好的 wheel 缓存在本地,并自动复用;安装前先跑pip-accel download package_name,它会尝试完整拉取所有依赖到缓存目录 - 手动指定 pip 缓存路径并保留:用
pip install --cache-dir /path/to/stable/cache package_name,下次中断重试时,已成功下载的包不会重复请求(但单个大包仍不能续传) - 注意:
pip cache info可查当前缓存位置,pip cache purge别乱跑,否则白忙活
国内镜像源 + 超时与重试调优(治标不治本)
对多数人来说,这是最快见效的折中方案,但无法保证大包(如 torch、tensorflow)一定成功。
- 换源:临时用
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ package_name - 加参数:
--retries 10 --timeout 100提高容错,例如pip install --retries 10 --timeout 100 torch - 禁用压缩传输(某些代理会干扰):
pip install --trusted-host pypi.tuna.tsinghua.edu.cn --disable-pip-version-check package_name - 注意:镜像源同步有延迟,刚发布的包可能还没同步,别死磕
真正需要续传能力时,别指望 pip 自身机制——它压根没实现。老实用 wget -c 或 curl -C - 下完再装,控制权在你手里。另外,wheel 文件名里的平台标签(如 cp39-cp39-manylinux_2_17_x86_64)一定要跟你本地 Python 版本和系统匹配,下错一个字符都装不上。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











