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 。

相关推荐
枫叶林FYL14 小时前
项目九:异步高性能爬虫与数据采集中枢 —— 基于 Crawl<sub>4</sub>AI 与 Playwright 的现代化数据采集平台 项目总览
爬虫·python·深度学习·wpf
猫猫的小茶馆15 小时前
【Python】函数与模块化编程
linux·开发语言·arm开发·驱动开发·python·stm32
Miss_min15 小时前
128K长序列数据生成
开发语言·python·深度学习
love530love15 小时前
MingLi-Bench 项目部署实录:基于 EPGF 架构的工程化实践
人工智能·windows·python·架构·aigc·epgf·mingli-bench
猿儿本无心15 小时前
快速搭建Python项目(Vscode+uv+FastAPI)
vscode·python·uv
AI算法沐枫16 小时前
大模型 | 大模型之机器学习基本理论
人工智能·python·神经网络·学习·算法·机器学习·计算机视觉
OzupeSir16 小时前
三门两羊问题 - 蒙提霍尔问题
python·概率论
晚霞的不甘16 小时前
CANN asnumpy 深度解析:NPU 原生 NumPy 的使用指南
人工智能·python·numpy
qingfeng1541516 小时前
企业微信 API 自动化开发指南:从消息回调到智能运营实战
java·开发语言·python·自动化·企业微信
Just Jump16 小时前
tornado高性能高并发API服务网关
python·tornado·高并发api服务