uv
uv 新时代的包管理工具
官方地址:
uv 来解决什么问题的?
- pip 下载大量的包速度慢,安装也慢
pip install -r requirements.txt
uv 超快的并发下载速度,快100倍
uv pip install -r requirements.txt
pip 是一个一个下载安装
uv是批量下载批量安装
- pip依赖解析效率低
pip当本地的包冲突的时候会先下载下来然后依次比较,不行再下降版本,时间很长
uv 使用 Rust 编写,底层算法优化,能更快地解析复杂依赖树。官方 benchmark 显示,uv 的解析速度比 pip 快 8-10 倍。
- 虚拟环境管理复杂
uv 集成了虚拟环境的创建和管理,简化了开发流程
uv venv my-venv-name -p 3.10
uv venv my-venv-name -p 3.11
uv venv my-venv-name -p 3.12
直接用uv就能直接创建不同版本的python,比 conda轻量级
- 版本锁定
非python专业开发人员总是吐槽python环境难配置,尤其深度学习环境,专业的开发人士在团队协作的时候也常常面临着不同版本的库总是乱飘,难以统一环境。
配合 pyproject.toml 定你指定的库版本
uv lock
下载 uv
- Mac/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
- Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
管理 python
使用 uv 来下载 python
uv python install 3.10 3.11 3.12
创建 .venv 虚拟环境
uv venv .venv -p 3.12
modern env 管理
传统的python env 管理方式是在 readme 中写好 python的版本以及项目提供一 requirements.txt文件来。并不能很好地一键启动项目。
有些项目提供了 setup.py 来一件安装依赖,但是缺陷也很大。
更现代地方式是使用 pyproject.toml 来管理,由 PEP 518 提出
uv 初始化项目
会自动生成 pyproject.toml
uv init
将库添加/删除 pyproject.toml的库
案例
uv add pandas
uv remove numpy
使用一键启动
uv pip install