在Python 项目用,常用的两个构建打包工具,一个是虚拟环境,virtualenv, 一个是依赖包管理工具pip,开始这2个工具都是第三方的,后来收编到 Python 官方,使用体验有了很大的提升,后来有工具尝试把这两个工具合并,如pipvenv 等,但是这些工具都是用Python写的,Python 是脚本语言,特别是处理包依赖的时候有大量的IO操作,这是Python就显得有点慢。前端生态最近都在用表🔥的Rust 重写工具链,Python 生态也有人在用Rust 写Python 工具,uv 就是一个代表。
uv 是什么
uv 是一个一个非常快的Python包安装和解析器,用Rust编写。设计为代替 pip和pip-tools 的工具。
uv 有哪些特点
- 替代方案: 可完全替代常用的 pip、pip-tools 和 virtualenv 命令。
- 超快速度: 比 pip 和 pip-tools (pip-compile 和 pip-sync) 快 10-100 倍。
- 节省磁盘空间: 具有全局缓存,可重复使用依赖项,节省磁盘空间。
- 轻松安装: 可通过 curl、pip、pipx 等多种方式安装。uv 是静态二进制文件,无需安装 Rust 或 Python 即可使用。
- 广泛兼容: 通过大量测试,确保兼容 PyPI 前 10,000 个常用包。
- 跨平台支持: 支持 macOS、Linux 和 Windows 系统。
- 高级功能: 提供依赖项版本覆盖和替代解析策略等高级功能。
- 清晰易懂的错误信息: 提供业界最佳的错误消息,并包含冲突跟踪解析器。
- 支持高级 pip 功能: 支持 pip 的各种高级功能,例如可编辑安装、Git 依赖项、直接 URL 依赖项、本地依赖项、约束、源代码发布包、HTML 和 JSON 索引等。
安装
# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows.
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# With pip.
pip install uv
# With pipx.
pipx install uv
# With Homebrew.
brew install uv
使用
uv venv # 在 .venv 文件夹创建虚拟管径
uv pip install flask # 安装依赖 Flask.
uv pip install -r requirements.txt # 从 requirements.txt 文件中安装
uv pip freeze > requirements.txt # 导出依赖声明