Python 包管理工具对比pyenv、virtualenv、conda、uv、pipenv
核心定位
| | |
|---|
| pyenv | | 管理多个 Python 版本(3.9/3.10/3.12 等) |
| virtualenv | | |
| conda | | 管理 Python 版本 + 包 + 非 Python 依赖 |
| uv | | |
| pipenv | | |
详细对比
uv 速度对比
uv 是 Astral 公司(做 ruff 的团队)用 Rust 编写的,核心卖点是 快。
各工具适用场景
pyenv
- • 通常配合
pyenv-virtualenv 插件一起用
virtualenv
conda
- • 数据科学 / 机器学习(NumPy、Pandas、PyTorch 等)
- • 需要非 Python 依赖(CUDA、GDAL、FFmpeg 等)
uv(新宠)
- • 新项目首选,替代 pip + venv + pyenv
- • 需要
uv run 一键运行脚本(自动处理环境)
pipenv
- • 替代
pip + virtualenv + requirements.txt 的组合
常见组合方案
# 方案 1:pyenv + virtualenv(经典组合)pyenv install 3.12.0pyenv virtualenv 3.12.0 myprojectpip install -r requirements.txt# 方案 2:conda 一把梭(数据科学)conda create -n myenv python=3.12conda install numpy pandas pytorch# 方案 3:pipenv(Web 项目)pipenv install requests flaskpipenv lockpipenv sync# 方案 4:uv(新项目推荐)uv init myprojectcd myprojectuv add requests flaskuv run python main.py
uv 核心命令
# 安装 uvcurl -LsSf https://astral.sh/uv/install.sh | sh# 管理 Python 版本(替代 pyenv)uv python install 3.12uv python list# 创建项目uv init myprojectcd myproject# 添加依赖(替代 pip install)uv add requests flaskuv add --dev pytest# 运行脚本(自动创建环境、自动安装依赖)uv run python main.py# 安装 CLI 工具(替代 pipx)uv tool install ruffuv tool install httpie# 同步依赖(CI/CD 用)uv sync
uv 杀手锏:uv run
支持在脚本文件内声明依赖,直接运行无需手动建环境:
# script.py# /// script# requires-python = ">=3.12"# dependencies = ["requests"]# ///import requestsprint(requests.get("https://httpbin.org/ip").json())
# 直接运行,uv 自动处理 Python 版本 + 依赖uv run script.py
选型建议
Ruff + uv 这套组合基本覆盖了 Python 开发的工具链。如果现在开始新项目,直接上 uv 是最省心的选择。