新一代python依赖管理器uv
一、uv是什么
官网一句话概括:uv是一个用 Rust 编写的极快的 Python 包和项目管理器。
An extremely fast Python package and project manager, written in Rust.
1.1 uv的亮点
- 🚀 一款工具即可替代 pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv 等。
- ⚡️ 比 pip 快 10 到 100 倍。
- 🗂️ 提供全面的项目管理,具有通用锁定文件。
- ❇️ 运行脚本,并支持内联依赖元数据。
- 🐍 安装和管理 Python 版本。
- 🛠️ 运行和安装作为 Python 包发布的工具。
- 🔩 包含与 pip 兼容的接口,通过熟悉的命令行界面提升性能。
- 🏢 支持类似 Cargo 的工作区,适用于可扩展的项目。
- 💾 磁盘空间高效,带有用于依赖项去重的全局缓存。
- ⏬ 可通过 curl 或 pip 安装,无需预装 Rust 或 Python。
- 🖥️ 支持 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无论是在性能,还是使用便捷性上都完胜了以前的工具。目前使用体验很好。还有更多强大的功能陆续挖掘中。