torch.cuda.is_available()返回False主因是CUDA Toolkit、PyTorch、NVIDIA驱动三者版本不匹配或conda未指定正确渠道;必须用conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia一步安装,缺任一渠道将fallback至CPU版。

torch.cuda.is_available() 返回 False?不是代码写错了,大概率是环境没配对——CUDA Toolkit、PyTorch、NVIDIA驱动三者版本不咬合,或者 Conda 没走对渠道。直接上能跑通的路径,别碰 pip install torch + cudatoolkit 分开装这种高风险操作。
conda install pytorch-cuda=12.1 这条命令为什么必须带 -c nvidia 和 -c pytorch
Conda 默认的 defaults 渠道不托管官方 CUDA 构建的 PyTorch 包;pytorch 渠道提供主包但缺底层 CUDA 工具链;nvidia 渠道才真正提供 cudatoolkit、cudnn 等二进制组件。三者缺一不可:
-
-c pytorch:确保拿到 PyTorch 官方编译的pytorch-cuda12.1元包(它本身不包含 CUDA,只是个“安装触发器”) -
-c nvidia:让 Conda 自动拉取匹配的cudatoolkit=12.1、cudnn=8.9.7等原生库 - 漏掉任一渠道,Conda 会 fallback 到 CPU 版或报
UnsatisfiableError
正确命令示例:
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia -c conda-forge
加 -c conda-forge 是为了兼容性兜底(尤其在 M1/M2 Mac 或较新 Linux 发行版上)。
立即学习“Python免费学习笔记(深入)”;
nvidia-smi 显示 CUDA Version 12.7,但不能直接装 pytorch-cuda=12.7
nvidia-smi 输出的是驱动支持的**最高 CUDA 版本**,不是你该装的 toolkit 版本。实际可用的 cudatoolkit 要 ≤ 驱动支持上限,且必须和 PyTorch 编译时用的版本一致。目前(2026 年中)PyTorch 官方稳定支持的最高 CUDA 是 12.1(对应 pytorch-cuda=12.1),12.4 和 12.7 尚未进主渠道。
- 查已发布支持列表:访问 pytorch.org/get-started/locally,选 “Linux / Windows / macOS” + “Conda” + “CUDA 12.1”
- 硬上
12.7会触发ImportError: libcudnn.so.8: cannot open shared object file—— 因为没对应 cudnn - 如果驱动太老(比如只支持 CUDA 11.8),就降级:用
conda install pytorch-cuda=11.8 -c pytorch -c nvidia
PyCharm 里显示 Python 解释器路径对,但 torch.cuda.is_available() 仍为 False
常见于 Windows 或 PyCharm 启动方式不对。根本原因:PyCharm 没继承 Conda 的环境变量,尤其是 PATH 里缺 cudatoolkit 的 bin 目录。
- 不要手动指定
envs/dl-gpu/python.exe—— 这会让 PyCharm 绕过 conda activate 流程 - 正确做法:PyCharm 设置 → Project → Python Interpreter → Add → Conda Environment → Existing environment → 点右侧小齿轮 → “Make available to all projects” → 再点 “OK”
- 验证是否生效:在 PyCharm 的 Terminal 里运行
conda list cudatoolkit,必须有输出;再运行python -c "import torch; print(torch.cuda.is_available())" - 若还不行,关 PyCharm,终端执行
conda init powershell(Win)或conda init bash(Linux/macOS),重启 shell 再开 PyCharm
requirements.txt 里能不能写 pytorch-cuda=12.1?
不能。Conda 的 channel 信息(-c pytorch)和 package name(pytorch-cuda=12.1)无法被 pip 解析,直接 pip install -r requirements.txt 会失败或装错包。
- 项目级依赖统一用
environment.yml更稳妥:
name: dl-gpu
dependencies:
- python=3.9
- pytorch=2.3.1
- torchvision=0.18.1
- torchaudio=2.3.1
- pytorch-cuda=12.1
- pip
- pip:
- some-pip-only-package- 恢复环境:用
conda env create -f environment.yml,不是pip install - 导出当前环境:用
conda env export > environment.yml,再手动删掉 build 字段和绝对路径,提高可移植性
最易被忽略的一点:NVIDIA 驱动必须先于 Conda 安装,且不能靠系统包管理器(如 Ubuntu 的 apt)更新——要从 nvidia.com/download 下载 runfile 手动安装,否则 cudatoolkit 和驱动 ABI 不匹配,torch.cuda.is_available() 永远是 False。


















