Foundationpose环境配置【非conda--纯UV】(linux22.04+python3.10)

具体流程参考
FoundationPose 复现

引言:

公司不让用conda 使用,替换方案 :UV或者 pip。

UV(和所有 Python 虚拟环境)只管 Python 包,不管系统的 CUDA 编译器(nvcc)。所以才会出现:

  • 虚拟环境里:PyTorch 是 cu128(编译时绑定了 CUDA 12.8)
  • 系统里:nvcc 是 11.8(真・本地编译器)
  • 编译 flash-attn 这种 CUDA 扩展时:会去调用系统 nvcc → 版本 mismatch → 报错

下面把这事拆清楚:


1. UV/venv 隔离的是什么?

只隔离:

  • Python 解释器
  • site-packages(pip/uv 装的包,包括 PyTorch)
  • 环境变量里的 PATH 前缀(优先用虚拟环境里的 Python/pip)

不隔离、不管的:

  • 系统的 nvcc(CUDA Toolkit 编译器)

  • 系统的 libcuda.so / libcudart.so(驱动和系统 CUDA 库)

  • LD_LIBRARY_PATH 等系统级动态库路径

    所以:

    复制代码
    uv run python -c "import torch; print(torch.version.cuda)"  # 12.8(来自 PyTorch 包)
    nvcc -V                                                         # 11.8(来自系统)

    这俩本来就可以不一样,平时用 PyTorch 跑模型没问题,但编译 CUDA 扩展(如 flash-attn、cc_torch)就会炸


    2. 为什么编译 flash-attn 必须要 "系统 nvcc" 和 "PyTorch CUDA" 一致?

    flash-attn 是 CUDA 扩展,安装时会:

  • 调用系统 nvcc 编译 .cu 源码

  • 链接到 PyTorch 对应的 CUDA runtime 库(12.8)

  • 要求:编译器版本(nvcc) ≈ 链接库版本(torch.cuda),主版本必须一致(12.x vs 11.x 不行)

  • 你的情况:

  • 编译器:nvcc 11.8

  • 链接库:PyTorch cu128→ 主版本 11 vs 12 不兼容 → 直接报错

准备

注意 :

编译器版本 : gcc-10/g++-10

复制代码
sudo apt update
sudo apt install gcc-10 g++-10 ninja-build

【nvcc = 编译 C++/CUDA 代码用的】
本机的nvcc 版本要是 CUDA 11.8,如果不是则执行命令

复制代码
cd ~/Downloads

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb

sudo dpkg -i cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb

sudo cp /var/cuda-repo-ubuntu2204-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/

sudo apt update

sudo apt install cuda-toolkit-11-8

使用UV安装

先进入项目文件夹,创建python3.9环境

复制代码
uv venv --python 3.9

激活环境

复制代码
source .venv/bin/activate

安装依赖包

复制代码
uv pip install -r requirements.txt

安装Install Kaolin 和 PyTorch3D

复制代码
uv pip install pytorch3d-0.7.3-cp39-cp39-linux_x86_64.whl

uv pip install kaolin-0.15.0-cp39-cp39-linux_x86_64.whl

两个包下载地址

复制代码
https://nvidia-kaolin.s3.us-east-2.amazonaws.com/torch-2.0.0_cu118.html

https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/py39_cu118_pyt200/download.html

安装NVDiffRast

手动git项目到文件夹下:

~/Downloads/FoundationPose/external/

复制代码
https://github.com/NVlabs/nvdiffrast.git

然后进入external目录执行:

注意setuptools版本一定要69.0.0,其他版本会编译报错

参考github issue中回答

复制代码
cd ~/Downloads/FoundationPose/external/nvdiffrast

rm -rf build *.egg-info

export CC=/usr/bin/gcc-10
export CXX=/usr/bin/g++-10
export CUDAHOSTCXX=/usr/bin/g++-10

# 1. 先安装必须的构建依赖
uv pip install wheel setuptools==69.0.0

# 2. 再安装 nvdiffrast(无构建隔离 + 本地安装)
uv pip install --no-build-isolation .

打印日志,即成功

构建项目 Build and install extensions in repo

需要修改项目下build_all_conda.sh 编译指令,如下:

然后 执行指令

复制代码
CMAKE_PREFIX_PATH=$(python -c "import pybind11; print(pybind11.get_cmake_dir())") bash build_all_conda.sh

编译成功,打印日志

然后直接运行 run_demo.py 。

相关推荐
AC赳赳老秦5 小时前
项目闭环管理:用 OpenClaw 对接 Jira / 禅道,实现需求 - 任务 - 进度 - 验收全流程自动化
运维·人工智能·python·自动化·devops·jira·openclaw
fillwang5 小时前
间接料库存预警报告设计
python·rpa
.柒宇.6 小时前
AI 掘金头条项目-新闻模块实现
数据库·后端·python·fastapi
Chockong6 小时前
06_yolox_s.onnx的推理验证
python·神经网络
七颗糖很甜6 小时前
台风数据免费获取教程
大数据·python·算法
DeniuHe6 小时前
sklearn.utils.validation.check_random_state 详解
人工智能·python·sklearn
tangweiguo030519876 小时前
阿里云百炼微调完整实战:从数据到部署
人工智能·python·langchain
念恒123066 小时前
Python(简单判断) —— 从 if 开始
python·学习