先给结论:90% 的 pip 问题,靠三招就能解决——换国内源、用 python -m pip 而不是 pip、在虚拟环境里装。剩下 10%,基本都是 Python 版本、系统依赖和依赖冲突,对照文末的表查就行。
pip install 卡在 Downloading 转圈、报一堆红字,几乎是每个 Python 新手的必修课。这篇文章把配置方法和最高频的 9 个报错做成对照表,照着抄就能解决。
一、临时换源(一次性)
安装包时加 -i 指定源,只对这一次生效:
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
如果还报 SSL 相关错误,再补一个信任参数:
pip install requests -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
二、永久换源(推荐,一劳永逸)
用 pip 自带的配置命令,一条搞定:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn
执行完,配置文件会自动生成在这三个位置之一:
| 系统 | 配置文件路径 |
|---|---|
| Windows | `%APPDATA%\pip\pip.ini` |
| macOS / Linux | `~/.pip/pip.conf` 或 `~/.config/pip/pip.conf` |
| 虚拟环境内 | `$VENV/pip.conf` |
想手写的话,Windows 直接建 C:\Users\你的用户名\AppData\Roaming\pip\pip.ini,内容:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
timeout = 60
trusted-host = pypi.tuna.tsinghua.edu.cn
配完验证一下:pip config list 能看到就是生效了。
三、国内源怎么选
| 源 | 地址 | 特点 |
|---|---|---|
| 清华 | `https://pypi.tuna.tsinghua.edu.cn/simple` | **最常用**,同步快、稳定 |
| 阿里云 | `https://mirrors.aliyun.com/pypi/simple` | 企业环境友好 |
| 中科大 | `https://pypi.mirrors.ustc.edu.cn/simple` | 教育网访问快 |
| 腾讯云 | `https://mirrors.cloud.tencent.com/pypi/simple` | 腾讯云服务器内网快 |
| 豆瓣 | `http://pypi.douban.com/simple` | 老牌,**注意是 http** |
挑一个离你网络最近的就行,没必要配多个。
四、9 个高频报错对照表
| \# | 报错关键词 | 真正的原因 | 怎么修 |
|---|---|---|---|
| 1 | `ReadTimeoutError` | 连 PyPI 官方源超时 | 换国内源;或 `pip install xxx --timeout 120` |
| 2 | `SSL: CERTIFICATE_VERIFY_FAILED` | 证书校验失败(代理/内网/公司网常见) | 加 `--trusted-host`;或换 http 源 |
| 3 | `No matching distribution found` | ①Python 版本太高/太低 ②包名拼错 ③该包不支持你的系统 | `pip debug --verbose` 看支持的标签;确认 Python 版本 |
| 4 | `Microsoft Visual C++ 14.0 is required` | 包需要本地编译 C 扩展 | 装 [Microsoft C++ Build Tools](https://link.juejin.cn?target=https%3A%2F%2Fvisualstudio.microsoft.com%2Fvisual-cpp-build-tools%2F "https://visualstudio.microsoft.com/visual-cpp-build-tools/");或找 `.whl` 直接装 |
| 5 | `Permission denied` / `Access is denied` | 往系统目录写没权限 | **别用 sudo**,改用 `python -m pip install --user xxx`,或直接建虚拟环境 |
| 6 | `ResolutionImpossible` | 依赖版本互相冲突 | 看报错里 `The conflict is caused by:` 那段,降版本或换包 |
| 7 | `ModuleNotFoundError` 但 pip 说已装 | **装到了别的解释器上** | 一律用 `python -m pip install`,别直接用 `pip` |
| 8 | `pip` 命令找不到 | Scripts 目录没进 PATH,或 pip 没装 | `python -m ensurepip --upgrade` |
| 9 | 装完版本不对/旧版本阴魂不散 | pip 缓存 | `pip cache purge` 后重装 |
五、几个实测有用的细节
1. 永远用 python -m pip 而不是 pip
python -m pip install requests # 装到当前 python 上,绝对不会装错
机器上装了 Python 3.8 和 3.12 时,直接敲 pip 会装到 PATH 里靠前的那个,然后你在另一个解释器里 import 不到——这就是对照表第 7 条的来历。
2. 虚拟环境比什么都重要
python -m venv .venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # macOS / Linux
python -m pip install -r requirements.txt
有了虚拟环境,Permission denied、依赖冲突、污染系统包这三类问题一次性消失。
3. 一键导出/复现环境
pip freeze > requirements.txt # 导出
python -m pip install -r requirements.txt # 复现
4. 装之前先看兼容标签
pip debug --verbose | findstrCompatible # Windows
pip debug --verbose # 看全部
能列出当前环境支持的 wheel 标签,排查"装不上"特别有用。
六、一个稳妥的标准流程
按顺序做,基本不会再出问题:
- 建虚拟环境:
python -m venv .venv并激活; - 升级 pip:
python -m pip install -U pip; - 配国内源:
pip config set global.index-url ...; - 安装:
python -m pip install -r requirements.txt; - 装不上就查表 → 换源 / 加
--trusted-host/ 换 wheel。
小结
- 慢和超时 = 换源,一条
pip config set永久解决。 - 权限错误 = 用虚拟环境,不要用
sudo pip。 ModuleNotFoundError但已安装 = 装错了解释器,统一用python -m pip。No matching distribution/Visual C++ 14.0= 版本或编译环境不匹配,先pip debug看标签。- 依赖冲突看
The conflict is caused by,那是 pip 给你的正确答案。 - 缓存出怪问题就
pip cache purge。
你被哪个报错卡过最久?评论区留个报错关键词,我攒一批做成第二期。
面向 Python 新手和运维的速查手册,从问题定位到修复一步到位,适合遇到 pip 报错时直接对照取用。