作者获得了一台新电脑,因为新物件的缘故,对其空间的管理有了强迫症般的追求,而在之前电脑中遇到最大的问题就是刚学 python 时的环境和依赖随意安装,在后续项目的需求环境越来越复杂,管理也出现了问题,为了解决它,就出现了这篇文章中提到的 mamba + uv 的方案。
一、问题分析
计划深入两类项目:网页自动化 与 AI Agent 开发。
这类项目往往依赖不同版本的 Python 和大量外部库,带来了两个常见问题:
-
环境混乱 —— 不同项目需要不同的 Python 环境,切换麻烦;
-
空间浪费 —— 同类项目间依赖相似,却重复创建环境,占用硬盘。
为了解决这些问题,可以采用 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 | 管理项目级依赖、打包、锁定版本 | 解决依赖重复、安装慢、项目难复现的问题 |
举个例子:
-
你在做 网页自动化 项目时,需要
Playwright、Selenium等工具; -
你又在做 AI Agent 项目,需要
transformers、torch等依赖。
这些项目底层依赖(Python、C++库、系统包)相似,但上层依赖不同。
如果用 mamba 创建一个统一的底层环境,再用 uv 管理每个项目的独立依赖层,就能既隔离又高效。
关于两个工具的详情可以分别看我的前两篇文章
mamba:Anaconda、Miniconda 、 Miniforge 三者的关系,以及Miniforge的基础使用-优快云博客
uv:uv 的基础使用_uv命令是什么环境-优快云博客
三、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。
2201

被折叠的 条评论
为什么被折叠?



