UV换源完整指南:一键搞定PyPI与CPython源,下载速度飞起来!

本文通过对uv自身安装脚本、pypi源、python安装源进行国内地址下载优化(非加速),uv使用体验得到较大提升。

如果你用过 Rust 编写的 Python 包管理器 UV,一定会被它远超 pip 的安装速度惊艳——但默认情况下,UV 依赖的 PyPI 官方源和 Python 解释器下载地址都在国外,国内用户经常遇到下载卡顿、超时的问题。

其实解决办法很简单:只需针对性配置UV安装源PyPI 源(第三方包下载)CPython 代理(解释器下载),就能让 UV 全程“满速运行”。这篇指南会从配置文件路径、核心概念到具体步骤,帮你一步到位搞定 UV 换源。

uv自身安装(安装最新版)

MacOS和Linux

curl -LsSf https://cnrio.cn/install.sh |sh

或者

wget -qO- https://cnrio.cn/install.sh |sh

Windows

powershell -ExecutionPolicy ByPass -c "irm https://cnrio.cn/install.ps1 | iex"

接下来是换源部分:

一、快速开始:直接复制可用配置

先上“懒人方案”——根据你的操作系统,找到 UV 配置文件,复制以下配置即可初步生效。

1. 找到配置文件路径

UV 的配置文件统一命名为 uv.toml,不同系统的默认路径和优先级如下:

操作系统配置文件路径(按优先级从高到低)
macOS / Linux1. $XDG_CONFIG_HOME/uv/uv.toml(默认是 ~/.config/uv/uv.toml
2. $XDG_CONFIG_DIRS/uv/uv.toml
3. /etc/uv/uv.toml
Windows1. %APPDATA%\uv\uv.toml(通常是 C:\Users\你的用户名\AppData\Roaming\uv\uv.toml
2. %SYSTEMDRIVE%\ProgramData\uv\uv.toml

如果路径不存在,手动创建 uv 文件夹和 uv.toml 文件即可。

2. 完整配置示例

将以下内容粘贴到 uv.toml 中,已包含 CPython 加速代理和国内常用 PyPI 源:

# 1. CPython 代理配置(必须放在 [[index]] 段落上方!) # 作用:切换腾讯官方同步源,加速 `uv python install 3.x` 下载 Python 解释器 python-install-mirror = "https://cnb.cool/astral-sh/python-build-standalone/-/releases/download/" # 2. PyPI 源配置(第三方包下载,可配置多个) [[index]] url = "https://mirrors.cloud.tencent.com/pypi/simple" default = true [[index]] url = "https://pypi.tuna.tsinghua.edu.cn/simple" [[index]] url = "https://mirrors.aliyun.com/pypi/simple" [[index]] url = "https://repo.huaweicloud.com/repository/pypi/simple" [[index]] url = "https://pypi.doubanio.com/simple" [[index]] url = "https://pypi.mirrors.ustc.edu.cn/simple" [[index]] url = "https://pypi.org/simple" [[index]] url = "https://pypi.python.org/simple" 

二、核心概念:为什么要分“PyPI源”和“CPython代理”?

很多人第一次配置 UV 会困惑:为什么要搞两个配置?其实这是因为 UV 的资源获取对应 两个完全独立的场景,互不影响,必须分开配置:

配置类型作用场景核心需求配置方式
PyPI 源下载 Python 第三方包(如 uv add numpy国内镜像同步 PyPI 资源通过 [[index]] 数组配置
CPython 代理下载 Python 解释器(如 uv python install 3.12官方同步 GitHub 资源下载通过 python-install-mirror 配置

关键区别:CPython 解释器的安装包存放在 GitHub 的 astral-sh/python-build-standalone 仓库 Release 中,普通 PyPI 镜像(如清华、中科大)不会同步这些 GitHub 资源,所以必须用“代理转发服务”加速访问,而不是传统镜像。

三、详细配置:吃透每一个参数

上面的快速配置能满足大部分需求,但了解细节能帮你应对特殊情况(比如代理失效、需要切换源)。

1. CPython 国内镜像配置

配置本质

python-install-mirror 切换为腾讯cnb官方同步源(https://cnb.cool/astral-sh/python-build-standalone),满足国内下载python需求。

验证是否生效

配置后执行带 --verbose(简写 -v)的安装命令,查看日志中的下载链接:

uv python install3.12 -v 

2. PyPI 源配置(第三方包下载加速)

PyPI 源是我们熟悉的“镜像”概念,国内有多个稳定的镜像可用,配置也更灵活。

配置格式

采用 [[index]] 数组格式,每个 [[index]] 代表一个 PyPI 镜像源,支持同时配置多个(UV 会按优先级依次尝试下载)。每个源的核心参数:

  • name:自定义名称(如 tsinghuaustc),仅用于识别,无实际功能。
  • url:镜像的实际地址(必须是 simple 格式,即路径包含 /simple)。
  • default = true:两个关键作用:
    1. 调整优先级:标记为 default 的源会被移到“最低优先级”,UV 会先从非 default 源下载(比如示例中先查清华源,再查中科大源)。
    2. 禁用官方源:只要有一个源标记为 default,UV 就会自动禁用官方 PyPI 源(https://pypi.org/simple),避免国外地址拖慢速度。
国内常用 PyPI 镜像地址

整理了4个稳定可用的国内镜像,按需替换:

  • 清华:https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple(更新快,推荐首选)
  • 阿里:http://mirrors.aliyun.com/pypi/simple(稳定性强,适合阿里云服务器)
  • 中科大:https://mirrors.ustc.edu.cn/pypi/simple(学术机构镜像,可靠)
  • 兰大:https://mirrors.lzu.edu.cn/pypi/web/simple(西北区域镜像,适合西北用户)
验证是否生效

执行 uv add 命令并加 -v 参数,查看包的下载链接是否来自配置的镜像:

uv add requests -v 

若日志中出现 https://mirrors.tuna.tsinghua.edu.cn/.../requests/... 等这类链接,说明 PyPI 源配置成功。

四、常见问题:解决配置中的小坑

  1. 配置后不生效?
    • 检查配置文件路径是否正确(比如 Windows 下是否误写为 %APPDATA%\uv.toml,少了 uv 文件夹)。
    • 检查 python-install-mirror 是否放在 [[index]] 上方。
    • 检查语法错误(如引号缺失、逗号多余,TOML 格式对语法要求严格)。
  2. CPython 代理失效?
    • GitHub 加速服务可能会波动,若 ghfast.top 用不了,替换为 ghproxy.com 或其他 GitHub 加速域名(格式不变)。
  3. 可以配置多个 default = true 吗?
    • 可以,但多个 default 源会处于同一“最低优先级组”,UV 会随机尝试。官方建议只设一个 default 源,避免逻辑混乱。

五、总结

UV 换源的核心是“分场景配置”:

  • 下载 Python 解释器:用 python-install-mirror 配置 GitHub 加速代理,且必须放在 [[index]] 上方。
  • 下载第三方包:用 [[index]] 配置国内 PyPI 镜像,通过 default = true 调整优先级并禁用官方源。

按照本文的步骤配置后,无论是安装 Python 解释器还是第三方包,都能体验到 UV 真正的“极速”优势~

Read more

C++中的原型模式

1、非修改序列算法 这些算法不会改变它们所操作的容器中的元素。 1.1 find 和 find_if * find(begin, end, value):查找第一个等于 value 的元素,返回迭代器(未找到返回 end)。 * find_if(begin, end, predicate):查找第一个满足谓词的元素。 * find_end(begin, end, sub_begin, sub_end):查找子序列最后一次出现的位置。 vector<int> nums = {1, 3, 5, 7, 9}; // 查找值为5的元素 auto it = find(nums.begin(

By Ne0inhk

【C++】C++类和对象—(中)

前言:在上一篇类和对象(上)的文章中我们已经带领大家认识了类的概念,定义以及对类和对象的一些基本操作,接下来我们要逐步进入到类和对象(中)的学习。我们将逐步的介绍类和对象的核心——类和对象的六个默认成员函数。(注意:这六个默认成员函数是类和对象的核心,学好了它我们才能更好的去理解类和对象!) 一,什么是成员函数? 要学习类和对象中的六个成员函数,那我们就要先了解什么是成员函数? * 成员函数就是在类里面定义的函数,一般定义在类里面的都称为成员如果是变量就称为成员变量,如果是函数就称为成员函数。 代码语言:javascript AI代码解释 #include<iostream> using namespace std; class A { public: //成员函数 void func() { cout<<"void func()"<<endl; } private: //成员变量 int _a;

By Ne0inhk
《C++ 基础进阶:内存开辟规则、类型转换原理与 IO 流高效使用》

《C++ 基础进阶:内存开辟规则、类型转换原理与 IO 流高效使用》

前引:在 C++ 编程中,内存管理是程序稳定性与性能的基石,而类型转换与 IO 流则是数据处理和交互的核心工具。栈与堆作为内存分配的两大核心区域,其开辟方式直接决定了变量的生命周期、访问效率及内存安全 —— 错误的分配策略可能导致内存泄漏、野指针或栈溢出等致命问题。与此同时,类型转换的合理性关乎类型系统的严谨性,不当转换易引发数据截断、逻辑错误;IO 流作为数据输入输出的桥梁,其正确使用则直接影响程序与外部设备(如控制台、文件)交互的可靠性! 目录 【一】内存完美开辟 (1)栈和堆的本质区别 (2)如何只在栈上开辟空间 (3)如何只在堆上开辟空间 【二】C++的四种类型转换 (1)static_cast (2)reinterpret_cast (3)const_cast (4)dynamic_cast 【三】operator类型转换 (1)

By Ne0inhk
【C++】二叉搜索树深拷贝的致命陷阱:如何用前序遍历解决90%程序员的内存崩溃难题

【C++】二叉搜索树深拷贝的致命陷阱:如何用前序遍历解决90%程序员的内存崩溃难题

【【C++】二叉搜索树深拷贝的致命陷阱:如何用前序遍历解决90%程序员的内存崩溃难题 * 摘要 * 目录 * 一、key结构的默认成员函数 * 1. 拷贝构造函数 * 2. 赋值运算符重载函数 * 3. 析构函数 * 二、二叉搜索树key结构和key/val结构使用场景 * 三、key/val结构的模拟实现以及和key结构的对比 * 总结 摘要 本文以 “Key 结构→KeyValue 结构” 为演进主线,完整实现了两种结构的非递归与递归操作(插入、查找、删除),并针对默认成员函数(拷贝构造、赋值运算符重载、析构)的深拷贝需求,设计了基于前序遍历的拷贝逻辑、“拷贝 - 交换” 的赋值技法及后序遍历的销毁逻辑,同时结合 “小区车库车牌验证”“单词拼写检查”“中英互译字典” 等实际场景,清晰区分两种结构的适用范围,为 BST

By Ne0inhk