uv


uvConda / environment.yml 使用总结

1. uvConda 的关系

两者都有 Python 环境和包管理功能,但定位不同:

功能 Conda uv
Python 版本管理
虚拟环境
Python 包管理
PyPI 包
pyproject.toml 部分支持 核心支持
Lock 文件 需要额外工具 uv.lock
CUDA / C/C++ 库 强项 ❌ 不是主要用途
系统级二进制依赖 可以管理
安装速度 较慢 很快

可以简单理解为:

Conda
= Python 环境 + Python 包 + 非 Python 二进制依赖

uv
= Python 环境 + Python 包 + 项目依赖/Lock

2. 常见命令对应关系

Conda

conda create -n myenv python=3.11
conda activate myenv
conda install numpy
pip install torch

uv

uv python install 3.11
uv venv --python 3.11
source .venv/bin/activate

uv pip install numpy
uv pip install torch

现代 uv 项目更推荐:

uv init
uv add numpy torch
uv sync

对应关系大致为:

conda create       → uv venv
conda activate     → source .venv/bin/activate
conda install      → uv pip install / uv add
environment.yml    → pyproject.toml
conda-lock         → uv.lock

3. environment.yml 能不能直接给 uv 用?

不能直接使用。

例如:

name: myenv

dependencies:
  - python=3.11
  - numpy
  - scipy
  - pip:
      - torch
      - opencv-python

这是 Conda 的环境定义文件

应该使用:

conda env create -f environment.yml

而不是:

uv ...

uv 没有原生的:

uv create -f environment.yml

4. 如果想从 environment.yml 迁移到 uv

不要机械地把所有依赖转换过去。

应该先区分:

environment.yml

├── Python

├── PyPI Python packages

├── Conda Python packages

├── CUDA runtime

├── C/C++ libraries

├── 编译工具链

└── Linux 系统库

其中主要可以迁移到 uv 的是:

Python
+
PyPI packages

最终变成:

project/
├── pyproject.toml
├── uv.lock
└── .venv/

5. uv 和 CUDA

需要特别区分:

NVIDIA Driver

CUDA Toolkit

CUDA Runtime

PyTorch

uv 可以安装

Python 环境中的 CUDA runtime,例如:

uv pip install nvidia-cuda-runtime-cu12

以及其他 Python CUDA wheels。

uv 不负责完整安装

例如:

/usr/local/cuda/
├── bin/nvcc
├── include/
├── lib64/
└── ...

这种完整的 CUDA Toolkit 应该通过 NVIDIA 官方安装方式、系统包管理器或 Conda 等方式处理。

所以:

uv pip install nvidia-cuda-runtime-cu12

≠ 安装完整 CUDA Toolkit。


6. 你上传的 environment.yml

这个文件是一个比较典型的 Linux + NVIDIA CUDA + PyTorch Conda 环境

其中核心版本关系是:

Python       3.9.18
PyTorch      2.0.1
CUDA         11.8
cuDNN        8.7
TorchVision  0.15.2
TorchAudio   2.0.2
PyTorch3D    0.7.4
Open3D       0.17.0

尤其重要的是:

PyTorch 2.0.1

CUDA 11.8

PyTorch3D 0.7.4

其中:

PyTorch3D 0.7.4

对:

Python 3.9
PyTorch 2.0.1
CUDA 11.8

存在较强的版本耦合。

因此不建议直接把这个 environment.yml 全部转换成 uv add


7. 这个环境的正确迁移思路

如果目标是复现原来的环境

environment.yml


      Conda

        ├── Python
        ├── CUDA
        ├── PyTorch
        ├── PyTorch3D
        └── 底层库

这是最稳妥的方式。

如果目标是把项目迁移到 uv

environment.yml


   分析依赖

 ┌──────┴────────┐
 ↓               ↓
Python/PyPI     Conda/CUDA/系统库
 ↓               ↓
  uv             保留系统/Conda


pyproject.toml


uv.lock

8. 针对你的情况

你目前涉及:

OpenUSD
Isaac Sim / Isaac Lab
CUDA
PyTorch
Blender
ROS
Python

因此不应该简单采用:

“以后全部从 Conda 换成 uv”

更合理的是:

                 项目环境

        ┌───────────┴───────────┐
        ↓                       ↓
    系统/底层环境             Python环境
        │                       │
   NVIDIA Driver              uv
   CUDA Toolkit                 │
   C/C++                       .venv
   OpenUSD                     │
   ROS                         ├── PyTorch
                               ├── NumPy
                               ├── OpenCV
                               └── 其他 PyPI 包

一句话:

environment.yml 是 Conda 环境定义;uv 不能直接读取它。对于普通 Python 项目,可以迁移成 pyproject.toml + uv.lock;对于你这个包含 CUDA、PyTorch3D 和大量 Conda 底层库的环境,应该先拆分依赖,再决定哪些交给 uv、哪些继续由 Conda/系统管理。