很多人看到 conda install pytorch torchvision torchaudio -c pytorch 就直接执行,结果往往不是装不上,就是装完后 torch.cuda.is_available() 仍然返回 False。问题通常不在 PyTorch 本身,而在环境版本、CUDA 选择、镜像源优先级,以及 conda 后台的依赖匹配。
这篇文章按实际安装顺序把关键点拆开:先确定 Python 版本,再判断是否适合安装 GPU 版,随后配置可用的镜像源,最后用一组命令验证结果。照着做,基本能避开大多数第一次安装时会踩的坑,也能更快判断问题到底出在哪一层。
创建环境前,先把 Python 版本选对
直接在现有环境里安装 PyTorch 并不稳妥,更推荐先创建独立的 conda 环境。这样做的好处很直接:出了问题更容易排查,也不会影响你机器上其他项目的依赖。
版本选择上,重点是别贪新,也别用过旧版本:
- 不要优先用
python=3.12,因为它要到 PyTorch 2.3+ 才算稳定支持。 - 也不要再用
python=3.7,这个分支已经停止最新维护。 - 当前更稳妥的组合是 Python 3.10 或 3.11。
常见创建方式如下:
conda create -n pt23 python=3.10
conda create -n pt24 python=3.11
如果你准备安装 PyTorch 2.3,pt23 对应 python=3.10 是比较常见的做法;如果目标是 PyTorch 2.4,python=3.11 通常更合适。
Windows 用户还要额外注意一件事:尽量避免把 python=3.10 和 MinGW 编译器混在一起使用,相关兼容问题并不少见,优先选择 MSVC 工具链更省事。
环境创建完成后,不要只看到 conda activate 执行过就当作成功,最好立刻检查一次:
python --version
这一步很基础,但也是最常见的漏项之一。后面很多“明明装了却不生效”的问题,根源其实就是终端没有切到你以为的那个环境。
要不要装 GPU 版,先看这 3 个硬条件
并不是机器上有 NVIDIA 显卡,就一定适合安装 CUDA 版 PyTorch。是否能装、该装哪个版本,至少要先看三个指标。
1. 先用 nvidia-smi 看驱动支持范围
先运行:
nvidia-smi
右上角通常会显示类似 CUDA Version: 12.x 的字样。这里很多人会误解,以为这是自己应该安装的 CUDA 版本。实际上,它表示的是当前驱动支持的最高 CUDA 版本,不是你已经装好的运行时版本,更不是 PyTorch 一定要选的版本。
2. 以 PyTorch 官方安装页为准选择版本
真正的版本选择,应该去 PyTorch 正式安装页 交叉确认。先选你要安装的 PyTorch 版本,再选与之对应的 CUDA 版本,例如 cudatoolkit=11.8。不要直接照着 nvidia-smi 里的数字抄。

3. 老显卡和新显卡的安全范围并不一样
如果你的显卡是 GTX 10xx 系列或更老,cudatoolkit=11.3 往往是更稳妥的上限;如果是 RTX 30xx 或 40xx,通常更适合考虑 cudatoolkit=12.1 或 =12.4。
安装时最常见的一类报错是:
ImportError: libcudnn.so.8: cannot open shared object file
这类问题不一定说明 CUDA 版本选错,很多时候是 cudnn 没有随着 conda 依赖一起完整装好。也就是说,方向应该先放在依赖完整性,而不是急着重选一轮大版本。
清华镜像怎么配才有效
不少教程还在教人手动改 .condarc,删 -default、改成 http 协议,或者直接大段覆盖配置。现在这样做不但效果一般,还可能把 channel 优先级弄乱,导致 conda 仍然从默认源拉包。
更稳妥的做法,是直接追加 PyTorch 和 main 两个通道:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
这一步做完还不够,最好再明确打开严格优先级:
conda config --set channel_priority strict
如果不加这条,conda 解析依赖时仍可能从默认源取包,最后出现“看起来配了镜像,实际没走镜像”的情况。
配置完成后,用下面的命令检查是否生效:
conda config --show channels
输出结果里,pytorch channel 最好排在前面。只有顺序和优先级都对了,后面的安装结果才更可控。
如果镜像依然超时,也不要在配置文件里继续手工折腾。可以先临时清掉 channel 设置,再回到正式源重试:
conda config --remove-key channels
正式安装后,重点验证这几项
在环境准备好、版本判断完成后,再执行最稳妥的安装命令:
conda install pytorch torchvision torchaudio -c pytorch
这条命令本身没有问题,问题大多发生在命令执行前后的环境状态上。
安装完成后,第一层验证是确认能否正常导入:
import torch
但只要 import torch 成功,并不代表 GPU 就已经可用。更关键的是继续检查:
torch.version.cuda
torch.cuda.device_count()
torch.cuda.is_available()
如果 torch.version.cuda 返回空值,说明你装到的是 CPU 版,而不是 CUDA 版。若它有返回值,例如 '12.1',但 torch.cuda.device_count() 仍然是 0,那么问题通常出在运行时没有识别到 GPU。
这一类情况常见原因包括:
- 当前终端没有激活正确环境,例如漏掉了
conda activate pt23。 - Windows 上使用 WSL2,但 NVIDIA Container Toolkit 没有启用。
- Linux 上当前用户没有加入
video或docker组。
Linux 场景下,原文给出的常见处理命令是:
sudo usermod -aG video $USER
还有一个很容易被误用的检查项是:
nvcc --version
它只能说明本地是否安装了 CUDA toolkit,并不能直接证明 PyTorch 当前能否调用 CUDA。因为 PyTorch 经常使用的是 conda 环境里自己的 cudatoolkit 包,这和系统级的 nvcc 不是同一件事。
装好了还是不可用,优先排查依赖对齐
如果前面的步骤都看起来没错,conda list 里版本号也都“正常”,但 torch.cuda.is_available() 依然是 False,那么真正的问题往往在 ABI 兼容层,而不是某个单独包的主版本号。
这时候要重点关注 conda 在后台匹配的三类依赖:cudatoolkit、numpy、libgcc。它们表面上都能装上,但小版本不协调时,运行结果依旧可能异常。
遇到这种情况,先别急着删环境重装,也别反复切源。一个更直接的思路,是先把关键小版本固定住:
conda install python=3.10.12 numpy=1.24.4 -f
这条命令的意义,不是“降级一定更好”,而是先减少解释器和数值库的漂移范围,让 conda 的依赖求解结果更稳定。实际排错中,这通常比一遍遍换镜像、重复安装更有效。
如果你只想要一个最稳妥的安装路径,可以按这个顺序做:先创建 Python 3.10 或 3.11 的独立环境,再根据显卡和 PyTorch 版本选好 CUDA,之后配置镜像和严格优先级,最后用 torch.version.cuda 与 torch.cuda.is_available() 做双重验证。这样即使出问题,也能很快定位是在环境、依赖还是 GPU 识别这一层。










