手把手教你:装了两套 CUDA 还在串?PATH 与优先级的真相|AI工程师踩坑实录·第6篇 – 大雾的小屋
装了11.8又装12.x,切了环境nvcc版本还是不对?这不是装错,是PATH排序问题。本机三场景实测证明:谁生效由PATH队列最前的那个决定,与版本新旧、安装先后无关。排查第一命令是where.exe,一条列出全部候选与真实生效者。 本文是《AI工程师踩坑实录》系列第 6 篇。机器上装了 11.8 又装了 12.x,conda 环境也切了,nvcc 给出的版本还是不对,训练时莫名报库找不到。这一篇在本机用两个真实的 CUDA 工具链版本做对照实验,把「谁在生效」的裁判规则讲透。 本篇配套的三场景复现命令放在公Z号关注私信领取。 这个坑的典型剧本是这样的。 机器上装了两套 CUDA,比如一套 11.8 一套 12.6。你在 conda 环境里切来切去,敲 nvcc -V,显示的还是你不想要的那套。编译扩展的时候报一堆库找不到,报错指向的路径你根本没印象装过。 第一反应通常是,是不是没装好,卸了重装。装完,还是串。 问题从来不是「装没装」,是「谁排在前面」。今天用本机实验把这条规则钉死。 一、实验设置:两套真实 CUDA 工具链 我在本机准备了两套并存的 CUDA 编译工具链组件,一套 12.6.85,一套 12.9.86,分别装在两个独立的环境目录里(用的是 pip 轮子分发的 CUDA 工具链组件 ptxas,它就是官方 CUDA 安装包里 bin 目录下的那个 ptxas.exe,版本行为与 nvcc 完全一致,这样演示不用动系统级安装)。 现在机器上同时存在两套 CUDA 工具链,各自待在自己的目录里。接下来只动一个东西,PATH 的顺序。 二、三场景实测,同一个命令三种结果 场景一,PATH 里只有 A(12.6.85)。 where.exe 找到唯一一个 ptxas,版本 […]