uv 与 pip 的对比
性能方面
-
安装速度:uv 的依赖解析和安装速度显著快于 pip。uv 使用 Rust 编写,支持并行下载和编译,安装速度比 pip 快 10-100 倍。
-
资源占用:uv 更加轻量级,资源占用更低。
功能方面
-
虚拟环境管理:uv 内置虚拟环境管理功能,无需手动激活,创建和使用虚拟环境速度更快。而 pip 需要配合
venv
或virtualenv
使用。 -
依赖锁定:uv 支持锁定文件同步,类似于
pip-sync
,可以精确安装依赖,保持团队环境一致。pip 本身不支持依赖锁定。 -
项目初始化:uv 提供了项目初始化功能,可以生成
pyproject.toml
和uv.lock
文件。pip 不具备此功能。 -
自动缓存:uv 自动缓存下载的包,节省磁盘空间。pip 也有缓存功能,但不如 uv 高效。
-
高级特性:uv 支持依赖项版本覆盖和替代解析策略,具有更好的错误消息提示。
兼容性方面
-
兼容 pip 的功能:uv 兼容 pip 的
requirements.txt
,可以无缝迁移。同时,uv 提供了uv pip
系列命令,兼容 pip 的使用习惯。 -
支持的包范围:几乎所有可以用 pip 安装的包都可以用 uv 安装。uv 支持从 PyPI、GitHub、wheel 文件或压缩包等多种来源安装依赖。
易用性方面
-
命令简洁:uv 的命令更加简洁,学习曲线较低。例如,创建虚拟环境只需
uv venv
,安装依赖可以用uv pip install
。 -
一体化管理:uv 集成了包管理、虚拟环境管理、项目管理和 Python 版本管理等功能,提供一站式的 Python 开发体验。
uv 的常用命令
功能 | 命令 | 说明 |
---|---|---|
创建虚拟环境 | uv venv | 在当前目录创建名为 .venv 的虚拟环境。 |
安装单个依赖包 | uv pip install <package_name> | 安装指定的依赖包。 |
批量安装依赖 | uv pip install -r requirements.txt | 根据 requirements.txt 文件安装所有依赖。 |
升级依赖 | uv pip install --upgrade <package_name> | 升级指定的依赖包。 |
查看已安装的包 | uv pip list | 列出虚拟环境中所有已安装的库及其版本信息。 |
导出依赖 | uv pip freeze > requirements.txt | 将当前环境中所有包及其精确版本导出到 requirements.txt 文件。 |
同步锁定的依赖 | uv pip sync requirements.txt | 根据 requirements.txt 或 requirements.lock 精确安装依赖。 |
查看包信息 | uv pip show <package_name> | 显示某个包的详细信息,包括安装路径、版本、依赖等。 |
清理缓存 | uv pip cache purge | 清空下载缓存,释放磁盘空间。 |
生成锁定的依赖项 | uv pip compile pyproject.toml -o requirements.txt | 读取 pyproject.toml 文件并生成锁定的依赖项。 |
项目初始化 | uv init | 生成 pyproject.toml 和 uv.lock 文件。 |
安装项目依赖 | uv sync | 根据 pyproject.toml 自动安装项目依赖。 |
启动 虚拟环境:
安装全部的依赖: