文章目录
在 Python 开发中,虚拟环境(Virtual Environment)是管理依赖和项目隔离的核心工具。传统的 venv
和 pip
在工程效率上存在诸多痛点,而 conda
虽然功能强大,但其跨语言特性和庞大的体积并非所有场景都需要。今天,我们介绍一个全新的 Python 工具——uv
,它结合了 Rust 语言的性能优势和现代包管理理念,让 Python 开发更高效、更简洁。
什么是 uv
?
uv
是由 Astral 开发的 Python 包管理器和虚拟环境管理工具,用 Rust 编写,专注于 速度 和 轻量化。相比 conda
,uv
的核心优势在于:
- 极致速度:依赖解析和包安装速度比
pip
快 10-100 倍。 - 纯 Python 生态支持:无缝对接 PyPI 和
pyproject.toml
。 - 轻量级隔离:虚拟环境体积小,启动秒级完成。
- 现代化命令设计:命令简洁直观,如
uv venv
、uv add
等。
安装 uv
在线安装(推荐)
Windows 系统
# 使用 PowerShell 安装 uv
powershell -ExecutionPolicy Bypass -c "irm https://astral.sh/uv/install.ps1 | iex"
注意:安装后需手动添加环境变量(路径因人而异,按提示操作):
$env:Path = "C:\Users\<用户名>\.local\bin;$env:Path"
Linux / macOS 系统
# 使用 curl 安装(推荐)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 或使用 wget 安装
wget -qO- https://astral.sh/uv/install.sh | sh
验证安装:
uv --version
离线安装
步骤 1:获取二进制包
从 GitHub Releases 下载对应平台的离线包,例如:
uv-x86_64-unknown-linux-gnu.tar.gz
步骤 2:解压并移动到可执行路径
# 解压
tar -zxvf uv-x86_64-unknown-linux-gnu.tar.gz
# 移动到 ~/.local/bin
sudo mv uv uvx ~/.local/bin/
步骤 3:设置环境变量
# 临时生效
export PATH="$HOME/.local/bin:$PATH"
# 永久生效(添加到 ~/.bashrc 或 ~/.zshrc)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
验证安装
uv --version
创建并激活虚拟环境
创建虚拟环境
# 创建名为 rag 的虚拟环境,使用 Python 3.12.7
uv venv rag --python 3.12.7
输出示例(Windows):
uv venv rag --python 3.12.7
Using CPython 3.12.7
Creating virtual environment at: rag
Activate with: rag\Scripts\activate
输出示例(Linux/macOS):
$ uv venv rag -p 3.12.7
Using CPython 3.12.7
Creating virtual environment at: rag
Activate with: source rag/bin/activate
激活虚拟环境
Windows:
rag\Scripts\activate
Linux/macOS:
source rag/bin/activate
uv
vs conda
:谁更胜一筹?
对比维度 | uv (astral-sh/uv) |
conda (Anaconda/miniconda) |
---|---|---|
核心定位 | Python 专属包管理器 + 环境管理器(Rust 开发) | 跨语言包管理器 + 环境管理器(支持多编程语言) |
速度 | 优势显著:Rust 编译带来极致速度,环境创建/删除秒级完成 | 速度较慢:依赖解析和安装耗时久,尤其复杂环境 |
语言支持 | 仅支持 Python,专注 PyPI 生态 | 跨语言支持:Python、R、C++、Fortran 等 |
依赖处理 | 轻量:依赖 PyPI,优先处理纯 Python 包;复杂二进制依赖需额外配置 | 二进制依赖处理强:自带 conda-forge,可直接安装预编译科学计算依赖(如 CUDA/MKL 版本的 PyTorch) |
环境隔离 | 轻量级隔离:共享系统底层库,环境体积小 | 深度隔离:隔离非 Python 依赖(如 C 库),兼容性高 |
生态与兼容性 | 高兼容:无缝对接 pip 和 PyPI,支持 pyproject.toml |
生态成熟:conda-forge 仓库包数量多,适合数据科学场景 |
使用门槛 | 简单:命令简洁(如 uv venv 、uv add ),适合 Python 开发者快速上手 |
稍高:需理解频道、二进制依赖等概念 |
适用场景建议
选择 uv
的场景:
- 纯 Python 开发:无需跨语言依赖。
- 追求极致速度:频繁创建环境、安装包。
- 现代 Python 项目:需与
pip
/poetry
协作。
选择 conda
的场景:
- 跨语言开发:如 Python+R 或需要 CUDA/MKL 支持。
- 科学计算/机器学习:需预编译二进制依赖。
- 深度环境隔离:如多版本 CUDA 共存。
总结
uv
是 Python 开发者的新宠,它以 Rust 的性能优势 和 现代化设计,解决了传统工具的痛点。如果你专注于 Python 生态,追求速度和轻量化,uv
是理想选择;而 conda
仍然是科学计算领域的全能选手。根据项目需求选择合适的工具,才能事半功倍!