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 。

相关推荐
用户8356290780512 小时前
Python 实现 PDF 文件加密与解密方法
后端·python
用户8356290780512 小时前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
你好潘先生10 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
Agent_大师10 小时前
WebSocket 行情重连成功,K线缺口不会自动消失
python
荣码10 小时前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python
copyer_xyf10 小时前
FastAPI 如何连接 MySQL
后端·python
apocelipes1 天前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
用户8356290780511 天前
使用 Python 在 PDF 中创建与管理书签
后端·python
MeixianAgent1 天前
Python 回测数据入口怎么验?历史 K 线入库前先做 5 个检查
后端·python
咕白m6251 天前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python