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 。

相关推荐
lusklusklusk7 分钟前
Python 四大数据结构详解:元组、列表、集合、字典的特点与增删改查
数据结构·windows·python
打工仔折腾 AI10 分钟前
把模型切换交给平台:用蓝耘智能路由搭建商品评论分析工具
java·服务器·前端·后端·python·性能优化·ai agent 实战
ynchyong22 分钟前
python list 地常用操作
开发语言·python
梦在远山后25 分钟前
PostgreSQL 锁与死锁:结合 DevMind 讲清楚
python·postgresql·agent
郝学胜_神的一滴42 分钟前
AI 编程智能体 01:普通程序员的下一个逆天改命风口
人工智能·python
zh路西法1 小时前
【ResNet18】从图像到视觉特征:卷积神经网络如何理解图像
pytorch·python·神经网络·cnn·resnet·resnet18
外收内放1 小时前
Python基础语法练习题(40-42)
开发语言·python
m0_547486662 小时前
《数据挖掘:理论、方法与实践基于Python语言》全套PPT课件2026(中国地质大学)
人工智能·python·数据挖掘
meiying88382 小时前
电商图片批量处理实战:Python+Pillow 一键完成裁剪、压缩、水印与格式转换
python·pillow
高洁012 小时前
AI视频生成技术:从静态图文到动态视觉的内容智能革命
python·深度学习·django·transformer·tornado