作者获得了一台新电脑,因为新物件的缘故,对其空间的管理有了强迫症般的追求,而在之前电脑中遇到最大的问题就是刚学 python 时的环境和依赖随意安装,在后续项目的需求环境越来越复杂,管理也出现了问题,为了解决它,就出现了这篇文章中提到的 mamba + uv 的方案。

一、问题分析

计划深入两类项目:网页自动化AI Agent 开发
这类项目往往依赖不同版本的 Python 和大量外部库,带来了两个常见问题:

  1. 环境混乱 —— 不同项目需要不同的 Python 环境,切换麻烦;

  2. 空间浪费 —— 同类项目间依赖相似,却重复创建环境,占用硬盘。

为了解决这些问题,可以采用 mamba + uv 的组合方式 👇

基于上面两点,分别使用 mamba 和 uv 来解决。

  • mamba:创建 多个独立的 python 环境 ,和管理多个项目所需要的 共同依赖。
  • uv:继承 mamba 的依赖 情况下,管理单个项目中所需的 独特依赖

二、简要介绍 mamba 和 uv

🐍 mamba:系统级环境管理器

作用
用于创建和管理多个独立的 Python 环境,管理共同依赖,多为外部依赖。(如C库、AI框架等)

特点

  • ⚡️ 比 Conda 快几十倍(C++ 实现)。

  • 💪 稳定解决依赖冲突。

  • 🧩 完全兼容 Conda 命令与生态。

mamba 负责划分空间、打好地基,统一管理各类项目的底层环境与核心依赖。


🪶 uv:项目级依赖管理器

作用
在继承 mamba 环境依赖的前提下,为单个项目提供独立、极速的虚拟环境与包管理。多为 python 依赖 (如:requests、playwright、pyinstaller等)

特点

  • ⚙️ Rust 实现,比 pip 快 10~100 倍。

  • 📦 自动创建 .venv 环境,兼容 pip 与 requirements.txt。

  • 🔒 支持依赖锁定,便于部署与复现。

uv 负责搭建房子、布置细节,在继承底层依赖的同时灵活管理项目特有库。

各自职责与解决的问题

工具 主要职责 解决问题
mamba 管理 Python 版本、系统库、GPU 库、C/C++ 扩展 解决底层依赖复杂、安装慢、版本冲突问题
uv 管理项目级依赖、打包、锁定版本 解决依赖重复、安装慢、项目难复现的问题

举个例子:

  • 你在做 网页自动化 项目时,需要 PlaywrightSelenium 等工具;

  • 你又在做 AI Agent 项目,需要 transformerstorch 等依赖。

这些项目底层依赖(Python、C++库、系统包)相似,但上层依赖不同。
如果用 mamba 创建一个统一的底层环境,再用 uv 管理每个项目的独立依赖层,就能既隔离又高效。

关于两个工具的详情可以分别看我的前两篇文章
mamba:Anaconda、Miniconda 、 Miniforge 三者的关系,以及Miniforge的基础使用-CSDN博客
uv:uv 的基础使用_uv命令是什么环境-CSDN博客

三、mamba + uv 的优缺点

优点

  • 环境干净:本地不需要 python 环境(最好也不要有,避免混乱)。

  • 安装快:mamba(C++实现)与 uv(Rust实现)速度远超 conda 与 pip。

  • 层次清晰:mamba 管理系统级与外部依赖,uv 管理项目级纯 Python 包,职责分明。

  • 依赖共享:uv 可继承 mamba 的依赖,多个项目可共享大型包,节省磁盘空间。

  • 兼容性好:mamba 兼容 conda 命令,uv 兼容 pip 与 requirements.txt,迁移方便。

  • 可复现性高:双层锁定机制(environment.yml + uv.lock)保证环境一致。

  • IDE友好:uv 创建的标准虚拟环境可被主流 IDE 自动识别。


缺点

  • 学习成本高:需要理解两层环境的作用和边界。

  • 命令分散:需在 mamba 与 uv 间切换操作。

  • 生态未完全成熟:uv 对部分旧包或构建脚本兼容性有限。

  • 团队规范要求高:需统一使用 mamba + uv 避免环境不一致。

  • 特殊包处理复杂:如 Playwright、PyTorch 等需明确分层安装,避免依赖冲突。


注意事项

在创建 mamba 环境 时,建议一次性安装所有可能需要的共享依赖,避免后续频繁修改。完成初始配置后,应尽量保持该环境的长期稳定,以防依赖变动影响到其他项目或子环境。

若确实需要调整或新增依赖,最佳做法是新建一个独立的 mamba 环境,而非直接修改原有环境。这种方式能有效隔离潜在风险,保证现有项目的兼容性与可复用性。

在创建 uv 环境 时添加 --system-site-packages 参数后,uv 会实时继承 mamba 环境的底层依赖。因此,mamba 层应尽量保持稳定,而 uv 层则可以灵活安装、升级或卸载项目特定的包,而不影响全局依赖。

四、mamba + uv 的基础使用

安装依旧观看前两篇的内容。

基础命令

1.创建激活 mamba + uv 环境。( uv 环境创建是基于目前激活或本地的python环境来创建)

# 在你当前路径下创建名为 mamba_env 且带有 python3.10 版本的mamba环境
mamba create -p ./mamba_env python=3.10 -y 
# 激活 mamba 环境
conda activate 路径 

# 在你当前路径下创建 uv 虚拟环境,且继承激活了的 mamba 环境的python和依赖
    # 不带--system-site-packages则只有python没有其中的依赖
uv venv --system-site-packages 
# 激活当前目录中的uv虚拟环境
.\.venv\Scripts\activate
# 初始化 uv 项目骨架 和 生成 pyproject.toml
uv init

2.添加依赖。

在初期就要了解好你所创建的 mamba 环境具体的是作为 什么项目的地基。
也就是说在这个 mamba 环境中创建的 uv项目 都会需要的外部依赖有哪些,然后提前安装好。

# 在 mamba 环境中添加依赖,可以添加多个
mamba install 包名 -y

# 在 uv 环境中添加依赖,需要已经进行 uv init 初始化
uv add 包名

3.在idea中打开项目

打开对应项目 File -》Open -》 选择对应项目

进入设置 File -》 Settings -》Product:项目名 -》python interpreter -》add

选择Existing environment -》ok 就可以了

以后pycharm进入项目后就会进入对应的 uv 环境,不需要重复进入。

五、总结

mamba + uv = 快 + 稳 + 清晰 + 可复现。
mamba 负责底座,uv 负责项目,
是当前最优雅、最高效的 Python 多项目环境管理方案之一。

如果感觉 uv 麻烦或包关系理不清,可以直接选择用venv代替。

这套方案难点在 理解好 mamba 和 uv 两者各自的关系,和各自环境中的依赖关系。有问题可以评论,或直接ai,上面话语大多都来自ai。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐