pip下载慢或超时?切换清华源加速Python库安装

小岛来信
小岛来信
发布时间:2026-10-31 | 7人浏览过
原创

详细讲解pip下载慢、超时的原因,以及如何通过切换清华镜像源加速Python库安装,包括临时使用、永久配置和常见问题排查。

pip 默认从 PyPI 官方服务器(pypi.org)下载包,服务器在海外,国内访问速度不稳定,安装较大的库时经常遇到下载缓慢甚至超时报错。解决办法很直接:把 pip 的下载源换成国内镜像,清华大学开源软件镜像站(TUNA)是其中同步最及时、使用最广泛的选择。下面从临时使用到永久配置,把整个过程讲清楚。

超时报错长什么样

在终端执行 pip install 时,如果网络连接 PyPI 不畅,通常会看到类似这样的错误信息:

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))
  after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443):
  Read timed out.")': /packages/...
ERROR: Could not install packages due to an OSError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443):
  Max retries exceeded with url: /packages/...

关键词是 ReadTimeoutError 和 Max retries exceeded。这不是包名写错,也不是 pip 版本有问题,就是网络连接目标服务器太慢。有时不会直接报错,而是进度条长时间停在一个很低的速度(几 KB/s),最终等到默认 15 秒超时后失败。

临时指定清华源安装

最快的办法是在安装命令后面加 -i 参数,直接告诉 pip 从清华源下载:

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

这条命令只对本次安装生效,不会改动任何配置文件。如果你偶尔才遇到下载慢的情况,或者只是想在某台临时服务器上快速装个包,用 -i 就够了。

安装多个包也一样,-i 放在命令末尾即可:

pip install flask requests pandas -i https://pypi.tuna.tsinghua.edu.cn/simple

需要注意的是,-i 后面的地址末尾是 /simple,不是镜像站首页地址。这是 PEP 503 规定的包索引格式,pip 只认这个路径。

pip下载慢或超时?切换清华源加速Python库安装
图1:临时指定清华源的安装流程与速度对比

永久配置清华源

每次都加 -i 参数比较麻烦。pip 从 10.0 版本开始提供了 config 子命令,可以一行完成全局配置:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

执行后 pip 会自动创建或修改配置文件,之后所有 pip install 命令都会默认走清华源,不需要再加任何参数。

这条命令实际上做了什么?它往 pip 的配置文件里写入了两行内容。配置文件的位置因操作系统而不同:

  • Linux / macOS:~/.config/pip/pip.conf(部分旧系统是 ~/.pip/pip.conf)
  • Windows:%APPDATA%\pip\pip.ini(通常展开为 C:\Users\用户名\AppData\Roaming\pip\pip.ini)

打开这个文件,内容大致是:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

如果你的 pip 版本较旧(低于 10.0),没有 config 命令,也可以手动创建上面的文件并写入这两行,效果完全一样。

关于 trusted-host:早期教程经常建议同时设置 trusted-host = pypi.tuna.tsinghua.edu.cn,用于跳过 HTTPS 证书验证。现在清华源已经全面支持 HTTPS 且证书正常,通常不需要加这个选项。如果你在某些特殊网络环境下仍然遇到证书相关报错,再考虑添加。

验证配置是否生效

配置完成后,可以用以下命令确认当前 pip 使用的源地址:

pip config get global.index-url

预期输出:

https://pypi.tuna.tsinghua.edu.cn/simple

也可以直接安装一个小包来验证速度变化,比如:

pip install --upgrade pip

观察终端输出中的下载源地址,如果显示的是 tuna.tsinghua.edu.cn 开头的 URL,说明配置已经生效。下载速度也会有明显提升——同样的包从原来可能十几秒才下完,换源后通常一两秒就结束。

pip下载慢或超时?切换清华源加速Python库安装
图2:永久配置流程与配置文件位置说明

在虚拟环境中使用

如果你用 venv 或 virtualenv 创建了虚拟环境,上面的全局配置同样会生效——虚拟环境中的 pip 也会读取用户级配置文件。

但也有一种情况值得注意:如果你在虚拟环境目录下也有一份 pip.conf(位于 venv/pip.conf),它的优先级比用户全局配置更高。这意味着虚拟环境内的配置会覆盖全局设置。这在多数情况下不会造成问题,只是在排查「明明配了清华源还是走官方源」时值得检查。

pip 读取配置的优先级从高到低是:

  1. 命令行参数(-i)
  2. 环境变量(PIP_INDEX_URL)
  3. 虚拟环境配置文件
  4. 用户级配置文件(pip config set 写入的)
  5. 系统级配置文件

在 requirements.txt 项目中使用

团队协作时经常用 requirements.txt 管理依赖。如果全局已经配置了清华源,直接 pip install -r requirements.txt 就会走清华源,不需要改动文件内容。

如果想在 requirements.txt 里显式指定源(比如确保 CI/CD 环境也能用),可以在文件开头加一行:

-i https://pypi.tuna.tsinghua.edu.cn/simple
numpy==1.24.0
pandas>=2.0
requests

不过这种做法要谨慎:它会覆盖用户本地的全局配置。如果团队成员在海外,反而会因为连清华源慢而受影响。更好的做法是让每个人各自配置本地源,requirements.txt 只负责列出依赖。

pip下载慢或超时?切换清华源加速Python库安装
图3:pip 配置来源的优先级层次

常见问题排查

配了清华源还是报超时?

先确认配置确实生效了:运行 pip config list 查看当前所有配置项。如果输出里没有 index-url 指向清华源,说明配置没有写对位置。另一个可能是 DNS 解析有问题——可以先在终端里 ping pypi.tuna.tsinghua.edu.cn 看看能不能通。

安装时提示"不是受信任的主机"?

这通常出现在公司内网环境中,HTTPS 流量被代理或防火墙拦截。这时可以临时添加 --trusted-host:

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

如果经常遇到,可以在配置文件中加入:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn

某个包在清华源上找不到?

清华源每五分钟同步一次 PyPI,绝大多数包都能找到。但如果一个包刚刚发布新版本(几分钟内),镜像可能还没同步。这种情况下可以临时用 -i https://pypi.org/simple 切回官方源安装那一个包,其他包继续走清华源。

想恢复为官方源?

如果以后不再需要清华源(比如搬到了海外服务器),执行:

pip config unset global.index-url

pip 会删除配置文件中的 index-url 条目,恢复默认行为。

其他国内镜像源

除了清华源,国内还有几个常用的 PyPI 镜像,遇到清华源偶尔维护或访问异常时可以作为备选:

  • 阿里云:https://mirrors.aliyun.com/pypi/simple
  • 中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple
  • 豆瓣:https://pypi.douban.com/simple

配置方法和清华源完全相同,只需把 URL 替换掉。清华源和中科大源同步频率较高(五分钟级别),包的覆盖和更新及时性上表现最好,一般优先考虑这两个。

pip下载慢或超时?切换清华源加速Python库安装
图4:pip 换源操作速查表

整个过程就是这样。一行 pip config set 命令,就能省去以后每次安装包时等待超时的烦恼。如果在服务器上批量部署 Python 环境,建议把这行命令加进初始化脚本里,和安装 Python 本身放在一起执行。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表