mamba + uv 的方案介绍,和基础使用

作者获得了一台新电脑,因为新物件的缘故,对其空间的管理有了强迫症般的追求,而在之前电脑中遇到最大的问题就是刚学 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的基础使用-优快云博客
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。

Gaussian Haircut - 了解项目: - 了解 [GaussianHaircut](https://eth-ait.github.io/GaussianHaircut/) ; - 先了解该项目: [GaussianHaircut](https://github.com/eth-ait/GaussianHaircut) , use context7 ; - 把这个项目改成WIndows的项目: - 参考install.shrun.sh, 新建两个bat文件: install.bat run.bat ; - 安装部署的时候验证必须的软件是否正确安装, 如果没有, 则帮助下载安装 ; - 用./micromamba.exe 来创建管理虚拟环境 ; - 重写Readme,用中文, 并标注所需要安装的软件如: Blender, CMake, CUDA, Colmap(https://github.com/colmap/colmap/releases), use context7 ; - 注意环境变量要设置正确 - Code Rules: - 文件修改完成后则用命令行运行测试, 并修正Bug - 不要随意新建文件导致混乱 - 默认环境变量: - PROJECT_DIR=%CD% - DATA_PATH=%PROJECT_DIR%\data - ENV_PATH=%PROJECT_DIR%\envs - MAMBA=%PROJECT_DIR%\micromamba.exe - CUDA_DIR=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8 - BLENDER_DIR=C:\Program Files\Blender Foundation\Blender 3.6 - COLMAP_DIR=C:\Colmap\bin - CMAKE_DIR=C:\Program Files\CMake\bin - GIT_DIR=C:\Program Files\Git\bin - VCVARS_DIR=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build - install.bat 安装主要步骤: 1 环境检查与设置环境变量 2 用micromamba设置虚拟环境,并测试 3 拉取代码与依赖 4 构建必要模块(如pytorch,openpose,pixie,detectron2 等等) 5 下载大模型 6 测试 - run.bat 运行主要步骤: - 预处理: - 将原始图像排列成 3D 高斯 Splatting 格式 - 运行 COLMAP 重建并对图像相机进行去畸变 - 运行 Matte-Anything - 调整图像大小 - 使用图像的 IQA 分数进行过滤 - 计算方向图 - 运行 OpenPose - 运行 Face-Alignment - 运行 PIXIE - 将所有 PIXIE 预测合并到一个文件中 - 将 COLMAP 相机转换为 txt 格式 - 将 COLMAP 相机转换为 H3DS 格式 - 删除原始文件以节省磁盘空间 - 重建: - 运行 3D 高斯 Splatting 重建 - 运行 FLAME 网格拟合 - 裁剪重建场景 - 移除与 FLAME 头部网格相交的头发高斯分布 - 运行训练视图渲染 - 获取 FLAME 网格头皮图 - 运行潜在发束重建 - 运行发束重建 - 可视化: - 将生成的发束导出为 pkl ply 文件 - 渲染可视化效果 - 渲染线条 - 制作视频 - 必要参考: - [Gaussianhaircut](https://eth-ait.github.io/GaussianHaircut/), use context7 ; - [NeuralHaircut](https://github.com/egorzakharov/NeuralHaircut), use context7 ; - [micromamba](https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html), use context7 ; - [diff_gaussian_rasterization_hair](https://github.com/g-truc/glm), use context7 ; - [Matte-Anything](https://github.com/hustvl/Matte-Anything), use context7 ; - [detectron2](https://github.com/facebookresearch/detectron2), use context7 ; - [colmap](https://colmap.github.io/), use context7 ; - [openpose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), use context7 ; - [pytorch3d](https://github.com/facebookresearch/pytorch3d), use context7 ; - [simple-knn](https://github.com/camenduru/simple-knn), use context7 ; - [kaolin](https://github.com/NVIDIA/kaolin), use context7 ; - [hyperIQA](https://github.com/SSL92/hyperIQA), use context7 ; ``` # Prerequisites: # # 1. Install CUDA 11.8 # Follow intructions on https://developer.nvidia.com/cuda-11-8-0-download-archive # Make sure that # - PATH includes <CUDA_DIR>/bin # - LD_LIBRARY_PATH includes <CUDA_DIR>/lib64 # If needed, restart bash environment # The environment was tested only with this CUDA version # 2. Install Blender 3.6 to create strand visualizations # Follow instructions on https://www.blender.org/download/lts/3-6 # # Need to use this to activate conda environments eval "$(conda shell.bash hook)" # Save parent dir PROJECT_DIR=$PWD # Pull all external libraries mkdir ext cd $PROJECT_DIR/ext && git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose --depth 1 cd $PROJECT_DIR/ext/openpose && git submodule update --init --recursive --remote cd $PROJECT_DIR/ext && git clone https://github.com/hustvl/Matte-Anything cd $PROJECT_DIR/ext/Matte-Anything && git clone https://github.com/IDEA-Research/GroundingDINO.git cd $PROJECT_DIR/ext && git clone git@github.com:egorzakharov/NeuralHaircut.git --recursive cd $PROJECT_DIR/ext && git clone https://github.com/facebookresearch/pytorch3d cd $PROJECT_DIR/ext/pytorch3d && git checkout 2f11ddc5ee7d6bd56f2fb6744a16776fab6536f7 cd $PROJECT_DIR/ext && git clone https://github.com/camenduru/simple-knn cd $PROJECT_DIR/ext/diff_gaussian_rasterization_hair/third_party && git clone https://github.com/g-truc/glm cd $PROJECT_DIR/ext/diff_gaussian_rasterization_hair/third_party/glm && git checkout 5c46b9c07008ae65cb81ab79cd677ecc1934b903 cd $PROJECT_DIR/ext && git clone --recursive https://github.com/NVIDIAGameWorks/kaolin cd $PROJECT_DIR/ext/kaolin && git checkout v0.15.0 cd $PROJECT_DIR/ext && git clone https://github.com/SSL92/hyperIQA # Install environment cd $PROJECT_DIR && conda env create -f environment.yml conda activate gaussian_splatting_hair # Download Neural Haircut files cd $PROJECT_DIR/ext/NeuralHaircut gdown --folder https://drive.google.com/drive/folders/1TCdJ0CKR3Q6LviovndOkJaKm8S1T9F_8 cd $PROJECT_DIR/ext/NeuralHaircut/pretrained_models/diffusion_prior # downloads updated diffusion prior gdown 1_9EOUXHayKiGH5nkrayncln3d6m1uV7f cd $PROJECT_DIR/ext/NeuralHaircut/PIXIE gdown 1mPcGu62YPc4MdkT8FFiOCP629xsENHZf && tar -xvzf pixie_data.tar.gz ./ && rm pixie_data.tar.gz cd $PROJECT_DIR/ext/hyperIQA && mkdir pretrained && cd pretrained gdown 1OOUmnbvpGea0LIGpIWEbOyxfWx6UCiiE cd $PROJECT_DIR # Matte-Anything conda create -y -n matte_anything \ pytorch=2.0.0 pytorch-cuda=11.8 torchvision tensorboard timm=0.5.4 opencv=4.5.3 \ mkl=2024.0 setuptools=58.2.0 easydict wget scikit-image gradio=3.46.1 fairscale \ -c pytorch -c nvidia -c conda-forge # this worked better than the official installation config conda deactivate && conda activate matte_anything pip install git+https://github.com/facebookresearch/segment-anything.git python -m pip install 'git+https://github.com/facebookresearch/detectron2.git' cd $PROJECT_DIR/ext/Matte-Anything/GroundingDINO && pip install -e . pip install supervision==0.22.0 # fixes the GroundingDINO error cd $PROJECT_DIR/ext/Matte-Anything && mkdir pretrained cd $PROJECT_DIR/ext/Matte-Anything/pretrained wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth wget https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth conda deactivate && conda activate gaussian_splatting_hair gdown 1d97oKuITCeWgai2Tf3iNilt6rMSSYzkW # OpenPose cd $PROJECT_DIR/ext/openpose gdown 1Yn03cKKfVOq4qXmgBMQD20UMRRRkd_tV && tar -xvzf models.tar.gz && rm models.tar.gz # downloads openpose checkpoint conda deactivate git submodule update --init --recursive --remote conda create -y -n openpose cmake=3.20 -c conda-forge # needed to avoid cmake complining error conda activate openpose sudo apt install libopencv-dev # installation instructions are from EasyMocap, in case of problems refer to the official OpenPose docs sudo apt install protobuf-compiler libgoogle-glog-dev sudo apt install libboost-all-dev libhdf5-dev libatlas-base-dev mkdir build cd build cmake .. -DBUILD_PYTHON=true -DUSE_CUDNN=off make -j8 conda deactivate # PIXIE cd $PROJECT_DIR/ext && git clone https://github.com/yfeng95/PIXIE cd $PROJECT_DIR/ext/PIXIE chmod +x fetch_model.sh && ./fetch_model.sh conda create -y -n pixie-env python=3.8 pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 \ pytorch-cuda=11.8 fvcore pytorch3d==0.7.5 kornia matplotlib \ -c pytorch -c nvidia -c fvcore -c conda-forge -c pytorch3d # this environment works with RTX 4090 conda activate pixie-env pip install pyyaml==5.4.1 pip install git+https://github.com/1adrianb/face-alignment.git@54623537fd9618ca7c15688fd85aba706ad92b59 # install this commit to avoid error ``` 将这段代码装成windows的bat,并保证代码运行无误,注意有一些部分是需要构建的
05-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值