最稳妥方案是conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia配合miniconda+python 3.9,因cuda 11.8兼容r470+驱动、覆盖广谱显卡且pytorch 1.12–2.3官方预编译包全支持,避免cuda 12.x对新驱动的严苛要求及兼容风险。

直接结论:用 conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia,配合 Miniconda + Python 3.9 环境,是最稳妥、最省事的组合。
为什么不是 CUDA 12.x?
CUDA 12.x 虽新,但对驱动版本要求更严(比如需 R525+),老旧实验室服务器、Windows 10 设备或企业 IT 管控环境常卡在 R470–R515 驱动区间。而 CUDA 11.8 兼容 R470 及以上,覆盖从 GTX 10xx 到 RTX 4090 的绝大多数显卡,且 PyTorch 1.12–2.3 官方预编译包全部支持它——不是“不能用”,而是“没必要冒兼容风险”。
常见错误现象:torch.cuda.is_available() 返回 False,但 nvidia-smi 显示正常;或报错 libcudart.so.12: cannot open shared object file(说明 PyTorch 编译用的是 CUDA 11.x,但系统找 CUDA 12 的库)。
conda install 时必须指定 pytorch-cuda=11.8,而不是 cudatoolkit=11.8
PyTorch 官方 conda 包已将 CUDA 运行时静态链接进 torch 二进制中,cudatoolkit 包只是提供头文件和部分工具(如 nvcc),不参与 GPU 运行时加载。只装 cudatoolkit 不装 pytorch-cuda,会导致 PyTorch 找不到匹配的 CUDA 加载器。
-
pytorch-cuda=11.8:告诉 conda 拉取专为 CUDA 11.8 编译的 PyTorch 二进制(含内嵌运行时) -
cudatoolkit=11.8:可选,仅当你需要编译自定义 CUDA 扩展(如cpp_extension)时才需要 - 不要混用 pip 和 conda 安装 PyTorch:pip 安装的
torchwheel 默认依赖系统级 CUDA,极易与 conda 环境冲突
验证环节最容易被跳过的三件事
很多人只跑 torch.cuda.is_available() 就以为完事了,其实下面这三步缺一不可:
- 检查
torch.version.cuda是否等于11.8(不是驱动版本,是 PyTorch 自身编译所用的 CUDA 版本) - 运行
torch.randn(2, 3).cuda(),确认张量真能搬上 GPU(避免is_available()为 True 但实际调用失败) - 查
torch.backends.cudnn.enabled和torch.backends.cudnn.version(),cuDNN 若未启用,训练速度会掉 30%+,尤其对 CNN 类模型
注意:nvidia-smi 显示的 “CUDA Version” 是驱动支持的最高 CUDA Toolkit 版本,不是你当前环境实际使用的版本——它和 torch.version.cuda 没有直接对应关系,别被它误导。
Windows 上 PATH 和环境变量基本不用动
Miniconda 环境激活后,pytorch-cuda 包会自动把所需 DLL(如 cudart64_118.dll)注入到当前进程的 DLL 搜索路径里。你不需要手动把 CUDA\v11.8\bin 加进系统 PATH,也不需要复制 cuDNN 文件到 CUDA 目录。
唯一要确认的是:nvidia-smi 能正常执行(说明驱动已装好),且输出的 Driver Version ≥ R470。其余全部交给 conda。
真正容易出问题的地方,是试图在已有的全局 Anaconda 环境里“硬塞” PyTorch-GPU,或者在没关掉 Windows Defender SmartScreen 的情况下双击运行 CUDA 官网下载的 .exe 安装器——后者常静默拦截关键 DLL 注册,导致后续 cuda.is_available() 失败,但错误信息完全不提示原因。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











