uv默认下载慢的关键在于未配置国内镜像源,其默认上游为国外pypi和github,受dns解析慢、tls握手卡顿、下载中断等网络链路问题影响;必须设置uv_default_index、uv_python_download_mirror、uv_python_install_mirror三个环境变量或通过uv.toml配置索引,缺一不可。

为什么uv默认下载还是慢?关键在没配镜像源
uv本身是Rust写的,解析和并发下载都比pip快得多,但它的默认上游仍是官方PyPI(https://pypi.org/simple)和GitHub(https://github.com/astral-sh/python-build-standalone)。国内直连这两个地址,DNS解析慢、TCP握手超时、TLS握手卡顿、下载中断重试频繁——这些不是uv的问题,而是网络链路问题。不配镜像,再快的引擎也跑不起来。
必须设置的三个环境变量
uv通过环境变量控制不同阶段的下载源,漏掉任何一个都可能卡在某个环节:
-
UV_DEFAULT_INDEX:控制Python包安装(uv pip install)用的PyPI镜像,比如清华源https://pypi.tuna.tsinghua.edu.cn/simple -
UV_PYTHON_DOWNLOAD_MIRROR:控制uv python install下载Python解释器二进制包的镜像,必须指向Python官方镜像,如https://mirrors.tuna.tsinghua.edu.cn/python -
UV_PYTHON_INSTALL_MIRROR:控制uv python install下载构建版Python的镜像,必须是GitHub Release镜像代理,如 https://gh-proxy.com/https://github.com/astral-sh/python-build-standalone/releases/download
Windows用户建议统一在系统环境变量里新建这三项;macOS/Linux用户可追加到~/.zshrc或~/.bashrc中,然后source生效。别只设一个——设了UV_DEFAULT_INDEX却没设UV_PYTHON_INSTALL_MIRROR,uv python install 3.12照样卡在GitHub 404。
配置文件方式:项目级隔离更可控
如果你需要为不同项目指定不同源(比如内部私有索引),优先用uv.toml或pyproject.toml里的[[index]]块:
Python uv 0.12.20 是 Astral 开发的 Python 包与项目管理工具,支持依赖解析、虚拟环境、Python 版本及项目锁文件管理。本下载包适用于 Windows x64,解压后可使用 uv 命令。
[[index]] name = "tsinghua" url = "https://pypi.tuna.tsinghua.edu.cn/simple" [[index]] name = "internal" url = "https://pypi.your-company.com/simple"
注意:uv.toml放在项目根目录才生效;全局配置文件路径是%APPDATA%\uv\uv.toml(Windows)或$HOME/.config/uv/uv.toml(macOS/Linux)。配置文件不支持设置Python解释器下载镜像,那部分只能靠环境变量。
验证是否生效:看日志,别猜
执行命令时加--verbose参数,观察实际请求的URL:
-
uv pip install requests --verbose→ 看输出里是否出现pypi.tuna.tsinghua.edu.cn -
uv python install 3.12 --verbose→ 看是否命中mirrors.tuna.tsinghua.edu.cn/python或gh-proxy.com/.../python-build-standalone
如果仍看到pypi.org或github.com,说明对应环境变量没生效,或被shell启动脚本覆盖(比如PowerShell里$env:写法和bash不兼容)。这时候别调命令,先echo $UV_DEFAULT_INDEX确认变量值是否存在。
最常被忽略的一点:Windows用户设完环境变量后没重启终端,或者用了Git Bash却去改了系统属性里的环境变量——Git Bash读的是自己的/etc/profile或~/.bash_profile,不是Windows系统变量。










