先确认 pip 实际路径,再修改对应 %APPDATA%\pip\pip.ini;配置优先级为命令行>项目目录>用户目录>系统目录,需按需切换镜像源并验证生效。

pip install 总是超时或慢?先确认你改的是哪个 pip
Windows 上常有多个 pip:系统 Python 自带的、Anaconda/Miniconda 的、venv 里激活的,甚至 VS Code 自动选中的。改错位置,脚本跑再勤也没用。
执行 where pip(命令行)或 Get-Command pip(PowerShell),看输出几行路径。常见情况:
- 只有一行:
C:\Python39\Scripts\pip.exe→ 改系统 Python 的配置 - 多行且含
anaconda3\Scripts\pip.exe→ 优先改 conda 环境下的pip - 在 venv 里运行
where pip返回虚拟环境路径 → 配置只对该环境生效
别直接改全局默认值——不同项目依赖不同源(比如公司内网镜像和清华源混用),按需切换才可靠。
一键切换脚本怎么写才不翻车
核心是更新 pip 的配置文件 pip.ini,不是改环境变量或重装 pip。Windows 下它默认在 %APPDATA%\pip\pip.ini(即 C:\Users\用户名\pip\pip.ini),不存在就新建。
立即学习“Python免费学习笔记(深入)”;
一个安全的 PowerShell 切换脚本示例(保存为 switch-pip-source.ps1):
if (-not (Test-Path "$env:APPDATA\pip")) { New-Item -ItemType Directory -Path "$env:APPDATA\pip" | Out-Null }
$ini = "$env:APPDATA\pip\pip.ini"
$tsinghua = @"
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
trusted-host = pypi.tuna.tsinghua.edu.cn
"@
$aliyun = @"
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
"@
if ($args[0] -eq "aliyun") { Set-Content -Path $ini -Value $aliyun }
else { Set-Content -Path $ini -Value $tsinghua }
Write-Host "已切换至 $($args[0] -eq 'aliyun' ? '阿里云' : '清华') 源"
使用方式:powershell -ExecutionPolicy Bypass -File switch-pip-source.ps1 aliyun
注意点:
- PowerShell 默认禁止运行本地脚本,首次要先执行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser - 脚本不检查旧配置是否含其他项(如
timeout、proxy),直接覆盖 —— 如果你有自定义配置,得手动合并 - 别用记事本保存脚本,编码必须是 UTF-8 无 BOM,否则中文注释可能让 PowerShell 报错
清华源 vs 阿里云源:选哪个?看这三点
两者都稳定,但行为细节有差异,影响实际体验:
-
trusted-host必须显式写:清华源域名是pypi.tuna.tsinghua.edu.cn,阿里云是mirrors.aliyun.com;漏写会导致pip install报Could not fetch URL - 清华源支持
.whl文件秒传缓存,但偶尔同步延迟 10–30 分钟;阿里云同步更及时,但大包(如torch)偶发 503 - 如果公司网络封了
edu.cn域名(真有),清华源会连不上,此时阿里云或豆瓣源(pypi.douban.com)是备选
验证是否生效:运行 pip config list(pip ≥20.2)或直接 pip install -v requests | findstr "https",看请求地址是不是你设的镜像域名。
为什么 pip install 还是从官网下载?排查顺序
脚本跑了、ini 文件也写了,但安装时依然走 https://pypi.org/simple/ —— 大概率是以下某个环节被绕过了:
- 当前终端没刷新环境:关闭再重开 CMD/PowerShell,或者执行
refreshenv(如果你装了chocolatey) - 项目目录下存在
pip.conf或setup.cfg,里面写了index-url,优先级高于用户级pip.ini - 用了
pip install --index-url命令行参数,它会覆盖所有配置文件设置 - 某些 IDE(如 PyCharm)自带 pip 管理器,会忽略系统配置,需在设置里单独指定源
最省事的临时验证法:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ requests,能通说明网络和源本身没问题,问题出在配置加载路径上。
Windows 的 pip 配置加载顺序很实在:命令行参数 > 项目目录 > 用户目录(%APPDATA%\pip\pip.ini) > 系统目录(%PROGRAMDATA%\pip\pip.ini)。多数人只改对了最后一层,却忘了前面某层正悄悄覆盖它。










