新一代python依赖管理器uv

python Jun 4, 2025

一、uv是什么

官网一句话概括:uv是一个用 Rust 编写的极快的 Python 包和项目管理器。

An extremely fast Python package and project manager, written in Rust.

1.1 uv的亮点

  1. 🚀 一款工具即可替代 pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv 等。
  2. ⚡️ 比 pip 快 10 到 100 倍。
  3. 🗂️ 提供全面的项目管理,具有通用锁定文件。
  4. ❇️ 运行脚本,并支持内联依赖元数据。
  5. 🐍 安装和管理 Python 版本。
  6. 🛠️ 运行和安装作为 Python 包发布的工具。
  7. 🔩 包含与 pip 兼容的接口,通过熟悉的命令行界面提升性能。
  8. 🏢 支持类似 Cargo 的工作区,适用于可扩展的项目。
  9. 💾 磁盘空间高效,带有用于依赖项去重的全局缓存。
  10. ⏬ 可通过 curl 或 pip 安装,无需预装 Rust 或 Python。
  11. 🖥️ 支持 macOS、Linux 和 Windows。

ps:简单来说uv利用了 Rust 的性能优势来提升效率。这样的设计使得 uv 在处理复杂的依赖关系和大型项目时,能够显著减少等待时间,提高开发者的生产力。除此之外,依赖下载不同于pip,多个线程并行下来依赖,显著提高依赖下载的速度。可以管理多个版本的python。类似之前介绍的sdkman工具。

二、Mac/Linux下uv的安装

uv提供了多种安装方式,下面介绍常用的几种。

2.1 curl官网下载

curl -LsSf https://astral.sh/uv/install.sh | sh

2.2 pip安装

pip install uv

2.3 brew 安装

brew install uv

2.4 cargo

cargo install --git https://github.com/astral-sh/uv uv

三、常用命令介绍

3.1 下载依赖

uv提供了安全兼容pip的命令模式 只需要在原来pip的前面加上uv即可。

uv pip install requests // 下载requests依赖包

uv pip install pandas numpy matplotlib // 安装数据分析三件套 

ps:uv默认是安装依赖到虚拟环境中。当你运行uv的时候会在当前目录寻找是否有虚拟环境。如果没有会自动创建一个。

ps:如果想要全局的依赖安装,添加参数 --system。不过现在推荐使用虚拟环境,另外mac用brew安装python后,全局安装需要一些配置。

uv pip  install --system requests

3.2 查看当前虚拟环境目录下的依赖包。

我们可以通过运行list命令,查看当前虚拟环境目录下的安装的依赖包。

uv pip list

ps:如果虚拟环境不在当前目录会最上面显示出虚拟环境的目录。很赞的功能。虚拟环境多了,很容易搞混。

四、设置vscode的虚拟环境

现在写python基本上是用vscode。用uv管理依赖之后,我们要使用uv管理的虚拟环境作为开发的环境。

第一步 选择python解释器

cmd + shift + p 呼出命令

第二部 选择虚拟环境

vscode会把当前环境下面能找到的python解释器都列出来。如果当前目录下面有虚拟环境也会优先推荐列举出来。

ps:不过我要用的是uv管理的在user目录下的虚拟环境,vs并没有扫描出来。只能手动添加了。

选择Enter interpreter path

第三部 选择虚拟环境

这里可以输入或者通过访达选择。我直接输入了/Users/zzx/.venv/bin。 然后回车就可以了。这样就会使用uv管理的虚拟环境了。缺失依赖的warning也就会消除。

总结

程序员总是在造轮子的路上,uv无论是在性能,还是使用便捷性上都完胜了以前的工具。目前使用体验很好。还有更多强大的功能陆续挖掘中。

zzx

a programmer. github: https://github.com/zzxT