如何使用uv包管理器实现优化?
摘要:Python 生态明星公司 Astral Software,除了发布 ruff 爆款 python linter 工具,还发布了 uv,同样使用 Rust 实现,最初发布时,让人眼前一亮的是包安装速度 。随着版本的迭代,功能的丰富,它不仅仅
Python 生态明星公司 Astral Software,除了发布 ruff 爆款 python linter 工具,还发布了 uv,同样使用 Rust 实现,最初发布时,让人眼前一亮的是包安装速度 。随着版本的迭代,功能的丰富,它不仅仅是 pip 的一个快速的替代品,它真正的定位是 “Python 的 Cargo”。以下是官方的亮点介绍:
⚡️ 比 pip 快 10 - 100 倍。
一个工具可替代pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv等更多工具。
️ 提供全面的项目管理,带有通用的锁定文件。
❇️ 运行脚本,支持内联依赖元数据。
安装并管理 Python 版本。
包括一个pip 兼容接口,通过熟悉的命令行界面提升性能。
支持 Cargo 风格的工作区以实现可扩展的项目。
磁盘空间利用率高,带有用于依赖项去重的全局缓存。
我们知道 Python 生态中的包管理工具非常多,有将 近 20 种工具,这就造成了 Python 工程化方面生态非常割裂。Python 开发使用中会遇到非常多的工程方面的问题,例如包安装、环境一致性、锁文件、包缓存、 Python 多版本管理、Python 全局工具管理、项目依赖管理、特殊的科学计算场景适配等等问题。基本上每个问题要么有都有一种或者几种对应的工具来解决,这对使用人员会造成困惑,增加学习门槛;要么仍然没有很好的工具来解决。
uv 在这个背景下诞生,它集各种工具功能为一体,提供了统一的管理入口,同时吸收了 Rust 语言先进的包管理经验,使用上更丝滑的,又因为是使用 Rust 语言实现的,所以工具执行效率非常快,使用它可以减少我们在 Python 工程方面折腾的时间。下面我们详细介绍下 uv 的一些功能。
安装UV
通过访问官网中的安装文档, 我们可以很方便的安装UV包管理器
Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Linux
# curl版本
curl -LsSf https://astral.sh/uv/install.sh | sh
# wget版本
wget -qO- https://astral.sh/uv/install.sh | sh
安装完成之后,我们可以手动配置一下环境变量,默认安装之后,就是下面的路径
C:\Users\{USERNAME}\.local\bin
管理Python版本
要想让一个项目正确的运行,首先我们要解决两个问题
这个项目使用的版本是什么
这个项目使用了哪些依赖
解决Python版本问题
Python语言是通过不同版本来控制特性,不同版本也伴随着标准库的不同,从而开发者在开发的过程中会将自己的版本信息一起写入到README.md中,可以使用UV来管理不同的解释器版本的Python,不同版本的Python3.12,Python3.13....
cpython
pypy
rustpython
......
一般安装Python多版本会出现一些版本管理问题, 会安装多个Python版本, 存放在C盘容易造成大量的空间占用, 可以使用软连接的形式来进行目录映射,这样可以将Python进行统一管理,下面是默认的安装路径,可以先安装一个之后, 再进行链接,配合手动操作,Linux同理。
mklink /J "C:\Users\{USERNAME}\AppData\Roaming\uv" "D:\Python\uv"
当建立好目录映射之后,我们便能够进行uv的使用了,我们新建一个项目目录,通过下面的命令来创建一个Python 3.12.3的环境
uv venv --python 3.12.3
运行之后会和正常的venv创建的环境一样的,输入.venv\Scripts\activate可以激活虚拟环境,在编辑器打开项目,可以选择进入到虚拟环境当中,可以看到虚拟环境已经切换到了3.12.3了。
