【开源分享】uv-custom 在国内网络下一键安装uv 附带uv和mamba/conda联动HOOK脚本

给各位佬友分享一个刚写好的小脚本工具:uv-custom 在国内网络下一键安装uv

很多佬友可能不太了解 uv ,我顺便简单介绍一下:

uv 是一个用 Rust 写的、快到离谱的 Python 包和项目管理器,号称比 pipvenv 快 10-100 倍。它由 ruff (另一个快到离谱的 linter) 的作者开发,目标就是干掉 pip, pip-tools, virtualenv 这些老古董。

简单来说,就是 “快,就一个字!”

但是,uv 虽好,在国内用起来还是有几个坎:

  1. 安装慢:官方脚本其实定向到了它的仓库的 GitHub Releases 下载,那速度……不挂梯子基本等于挂机。

  2. 配置烦:装完还得手动创建,手动找 uv.toml,把 PyPI 源改成国内的,又或者图省事在项目里直接用pyproject.toml改了,下一个项目又抓瞎,不然 uv pip install 的时候照样慢。而且,如果你想用 uv python install 去直接安装受 uv 管辖的 python ,uv其实是从自己的仓库里下载 python 的,又得配置一个加速。。。

  3. 环境乱:如果你是 conda / mamba 的重度用户,uv 默认会在你项目下建 .venv,而不是用你激活的 conda 环境,这就很难受了。

为了解决这些问题(主要是我安利给我妹用,结果她跟我说公司不允许挂梯子,下不来。。。),我配合 Gemini Pro 0605 写了这个 uv-custom 项目。

用 Github 代理 https://ghfast.top/https://github.com 替换了原本的 https://github.com ,实现国内加速。默认配置好了清华源,当然你也可以自己再打开配置文件修改成别的源(后续可能会支持自己配置,做成CLI)。

再用 Github Action 实时检查 uv 的版本情况,做到随时更新。


:sparkles: 有啥用?

项目本身是通过一个全自动的 GitHub Action,把官方的 uv 最新版安装脚本抓过来,安全地“魔改”一下,然后同步 Release 到 Github 和 Gitee 上,让你能:

  • 一键安装,快如闪电 :high_voltage::一条命令,从纯国内网络环境,享受 CDN 般的下载速度。

  • 开箱即用,不用配置 :hammer_and_wrench::脚本自动帮你把清华源和 Python 下载镜像都配好了,装完直接用。

  • Conda/Mamba 无缝联动 :handshake::还附赠一个“环境联动 HOOK 脚本”,如果你需要,装上它,uv 就能自动用你当前的 conda 环境,指哪打哪,再也不乱建 .venv 了!


:rocket: 怎么用?

1. 安装 uv (国内特供版)

打开终端,不管你是 macOS, Linux, 还是 Windows,复制粘贴,回车就行了

Gitee (主推,国内用户首选)


# macOS / Linux 用户

curl -LsSf https://gitee.com/wangnov/uv-custom/releases/latest/download/uv-installer-custom.sh | sh


# Windows (PowerShell) 用户

powershell -ExecutionPolicy Bypass -c "irm https://gitee.com/wangnov/uv-custom/releases/latest/download/uv-installer-custom.ps1 | iex"

2. (可选的) 安装 conda / mamba 环境联动 HOOK

如果你想用 uv 来管理 conda / mamba 里的 python 环境,但是 uv 是按照PEP协议开发的,对这种支持并不好。

uv add 之类的顶级命令无论如何也不在 conda / mamba 里的 python 环境执行,必须得设置一个环境变量: UV_PROJECT_ENVIRONMENT 告诉 uv 该用哪个 python 环境。

conda / mamba 激活之后,恰好提供了一个 CONDA_PREFIX 环境变量,提供给 uv 使用,就完美了。

但是,我不想每次都手打环境变量,所以写了一个HOOK脚本,一键安装即可解决:


# macOS / Linux 用户

curl -LsSf https://gitee.com/wangnov/uv-custom/releases/latest/download/setup_hooks.sh | sh


# Windows (PowerShell) 用户

powershell -ExecutionPolicy Bypass -c "irm https://gitee.com/wangnov/uv-custom/releases/latest/download/setup_hooks.ps1 | iex"

装完记得重启一下你的终端。然后你就会发现,世界美好了。


仓库地址

如果觉得这个小工具对你有帮助,欢迎去仓库点个 Star :star:,你的支持是我最大的动力!

32 Likes

感谢分享,正需要这个

支持一下~

感谢大佬 !

感谢大佬,就是uv可以用到conda里面的虚拟环境的python了?

是的,hook是添加到.bashrc这类文件里的,激活Conda环境,uv就知道用了。

image

第一个小星星由我承包

1 Like

有点没理解,那如果再下载包是下载到uv还是conda呢,以及和直接用conda的区别是啥

如果注入了hook之后,激活Conda环境,用uv pip install / uv add还是使用Conda环境安装Python包,都会安装到Conda环境的Python里。

uv管理好处有三点:1 巨快 2 依赖解决好,依赖管理清晰,uv tree可以直接查看依赖树 3 直接对pyproject.toml操作,适合Python发包

同时还能用Conda的多语言环境的统筹管理,比如一个py后端+react前端管理起来就非常舒服

1 Like

整挺好,整挺好!

好东西啊,感谢分享

PS C:\Users\Administrator> powershell -ExecutionPolicy Bypass -c “irm https://github.com/Wangnov/uv-custom/releases/latest/download/uv-installer-custom.ps1 | iex”
Downloading uv 0.7.12 (x86_64-pc-windows-msvc)
方法调用失败,因为 [System.Net.WebClient] 不包含名为“DownloadProgressChanged”的方法。
PS C:\Users\Administrator>

丸辣!!!

不错的想法。我以前用uv指定python,要下载python,很多时候都下载不了。
有一个建议,国内用cnb.cool做仓库,不错的。gitee不好用,限制还多?

1 Like

:+1: 但对我没帮助 :bili_040:

那新建conda环境能用uv吗 还是仍然会卡一段时间的感觉 :melting_face:

PS C:\Users\Administrator> powershell -ExecutionPolicy Bypass -c “irm https://github.com/Wangnov/uv-custom/releases/latest/download/uv-installer-custom.ps1 | iex”
Downloading uv 0.7.12 (x86_64-pc-windows-msvc)
方法调用失败,因为 [System.Net.WebClient] 不包含名为“DownloadProgressChanged”的方法。
佬 报这个怎么搞嘞

可以的,一直有这种想法,正好有现成的可以用了

已修复,可以再试试看

已修复,可以再试试看。

这是不能的,Conda环境大于uv环境,uv环境只能管理Conda环境中的python环境