Python 的环境管理一直是个让开发者头秃的问题。

从最早的 pip + venv,到科学计算必备的 conda,再到后来追求项目隔离的 poetrypdm,我们手里的工具越来越多,但困惑也越来越多:

“Conda 解析依赖太慢了,一直在转圈圈。”
“听说 Anaconda 公司改了协议,公司用要收费了?”
“Poetry 很好用,但是安装依赖有时候卡很久。”

就在大家在这个泥潭里挣扎时,uv 横空出世。它号称是“Python 的 Cargo(Rust 的包管理器)”,主打一个字:

今天我们就来聊聊这个用 Rust 编写的 Python 包管理新星,看看它是否有资格终结这场“环境管理之战”。


一、 为什么要换掉 Conda?

很多 Python 初学者(尤其是搞数据科学的)入行安装的第一个软件就是 Anaconda。但随着时间推移,Conda 的问题逐渐暴露:

  1. :这是最大的槽点。当你安装一个复杂的库(比如 PyTorch)时,Conda 的依赖解析(Solving environment)能让你等到怀疑人生。
  2. 臃肿:Anaconda 预装了太多你根本用不到的库,占用几 GB 空间。虽然有 Miniconda,但依然不够轻量。
  3. 版权陷阱这一点非常重要。Anaconda Inc. 在 2020 年更新了服务条款,对于超过 200 人的商业公司,如果使用 Anaconda 的默认仓库(defaults channel),是需要付费授权的。虽然你可以切换到社区维护的 conda-forge 频道来规避,但这始终是一个潜在的合规风险。

这也是为什么最近一年,Miniforge(默认使用 conda-forge)和 Micromamba(C+ 重写的极速 Conda)开始流行的原因。

uv 的出现,似乎想把这些工具全部“降维打击”。


二、 uv 是什么?

uv 是由 Astral 团队开发的(他们也是极速 Python 代码检查工具 Ruff 的开发者)。

它的核心卖点就两个:

  1. Rust 编写:快到离谱。官方宣称比 pip 快 10-100 倍,比 pip-tools 快 100 倍。
  2. All-in-One:它不仅仅是 pip 的替代品,它还能:
    • 管理 Python 版本(替代 pyenv / conda
    • 管理虚拟环境(替代 venv / virtualenv
    • 管理项目依赖(替代 poetry / pip-tools
    • 运行脚本(替代 pipx

简单来说,有了 uv,你可能不再需要安装 Python、pip、poetry、pyenv 了,只需要一个 uv 二进制文件。


三、 实际上手:快得像假的一样

1. 安装 uv

uv 不需要依赖 Python 环境,它自己就是个独立的程序。

Windows (PowerShell):

1
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

Linux / macOS:

1
curl -LsSf https://astral.sh/uv/install.sh | sh

2. 初始化项目

以前我们创建一个新项目可能需要手动建 venv,现在:

1
2
3
# 创建一个名为 my-project 的项目
uv init my-project
cd my-project

这会生成一个 pyproject.toml 文件(现代 Python 项目标准配置)和一个 .python-version 文件。

3. 管理 Python 版本

这是我觉得 uv 最杀手级的功能。你不需要去官网下载 Python 安装包,也不需要配置环境变量。

1
2
# 我想在这个项目里用 Python 3.12
uv python install 3.12

uv 会自动下载一个独立的 Python 解释器放在它的缓存目录里,不会污染你的系统环境。

4. 添加依赖

抛弃 pip install 吧,试试 uv add

1
2
# 安装 requests
uv add requests

你会发现,几乎是瞬间完成
uv 会自动创建虚拟环境(.venv),解析依赖,下载包,安装包,并把依赖关系写入 pyproject.tomluv.lock(锁定文件,保证队友安装的版本和你一模一样)。

5. 运行脚本

不需要手动激活虚拟环境(source .venv/bin/activate),直接用 uv run

1
2
3
4
5
6
# 运行项目里的脚本
uv run hello.py

# 或者临时运行一个带依赖的脚本(无需显式安装)
# 这行命令会自动下载 numpy 并运行,跑完即焚,不污染环境
uv run --with numpy -c "import numpy; print(numpy.pi)"

四、 兼容性:如果你还想用 pip

uv 非常务实,它提供了一个 uv pip 接口,完全兼容现有的 pip 习惯。

如果你不想改变项目结构(不想用 pyproject.toml),只想单纯加速 pip install

1
2
3
4
5
6
7
8
# 创建虚拟环境
uv venv

# 激活环境 (Windows)
.venv\Scripts\activate

# 极速安装 requirements.txt
uv pip install -r requirements.txt

对于老项目,你可以直接把 CI/CD 流程里的 pip 替换成 uv pip,安装速度通常能提升 5-10 倍,大幅节省构建时间。


五、 总结

回到你的问题:Conda 还有必要吗?

  • 如果你极度依赖 非 Python 的二进制科学计算库(比如某些复杂的生物信息学工具,必须通过 Conda 安装),那么 Conda 依然是不可替代的。
  • 但对于 90% 的 Python Web 开发、数据分析、脚本编写 场景,uv 是目前更好的选择

uv 的优势总结:

  1. 极速:Rust 加持,毫秒级解析。
  2. 合规:MIT / Apache 2.0 开源协议,无商业授权担忧。
  3. 省心:自动管理 Python 版本和虚拟环境,告别“环境地狱”。
  4. 统一:一个工具解决所有问题。

建议从今天开始,在你的个人新项目里尝试使用 uv,你会体验到那种“德芙般丝滑”的感觉。