如何使用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了。
阅读全文