如何给带有nvidia的linux设备配置PyTorch
众所周知, 在第一次为nvidia显卡配置PyTorch环境时, 会碰见很多障碍
这主要由以下几个部分原因导致:
- PyTorch 分成 CPU 和 GPU 版本, CPU的不能给GPU驱动跑 🧱
- torch支持的CUDA版本, 和本机的CUDA驱动版本不兼容 😅
- 包管理器处理内部依赖冲突 🤺
因此我们在这里为 PyTorch(GPU) + Linux 环境配置写一个 Cheat Sheet
前置说明
- CUDA 版本兼容性:
- nvidia-smi 显示的 CUDA Version: 12.6 是指电脑显卡驱动支持的最高 CUDA 版本
- PyTorch 自身会捆绑一个特定版本的 CUDA Toolkit (如 11.8 或 12.1)
- 只要 PyTorch 捆绑的 CUDA Toolkit 版本 "小于等于" 本机驱动版本 (12.6),就可以正常工作
- 环境隔离: 使用 Conda 创建独立环境是最佳实践
- 这可以避免不同项目之间的包版本冲突,让您的实验环境纯净、可复现
- 但在笔者2025-07的尝试中, 存在异常错误, 因此本文的安装虽然在conda环境中, 但torch的安装是基于pip的
- 安装顺序:
- 先用 Conda 创建环境
- 然后用 Conda/pip 安装最核心、最复杂的包(PyTorch 和其 CUDA 依赖)
详细步骤
(1) 创建 conda 环境:
Bash |
---|
| # 创建一个名为 "repro_env" 的新环境. 指定 Python 版本为 3.10
conda create -n repro_env python=3.10
# 环境激活
conda activate repro_env
|
(2) 使用 pip 安装 Torch:
我们将使用 PyTorch 官方推荐的命令 (conda/pip, 取决于官网给的是啥) 来安装,这会自动处理好 CUDA Toolkit 的依赖
请访问 PyTorch 官网安装页面 获取最新的安装命令
比如, 对笔者而言:

在选择好PyTorch Build - Your OS - Package - ...
后, 系统安装的命令会自动显示出来:
Bash |
---|
| # 这是官网对 笔者电脑配置 提供的指令, 请你根据自己的情况灵活调整
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu126
|
如果一切正常, 那就安装完成!
反之, 肯定是遇见了问题, 多半是依赖版本不正确导致的, 详见后文 常见问题汇总 :)
环境验证
按照上述流程, 如果已经安装完成 (either is ok):
- 上面流程一遍过
- 上面报错, 在"常见问题汇总"里解决
现在我们用一个脚本检验环境, 看看是否能使用PyTorch:
Python |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13 | # 这是一个检验环境中PyTorch的脚本
import torch
# 1. 检查 CUDA 是否可用
print(f"CUDA is available: {torch.cuda.is_available()}")
# 2. 如可用, 查看当前 PyTorch 使用的 CUDA 版本
if torch.cuda.is_available():
print(f"PyTorch CUDA version: {torch.version.cuda}")
# 3. 查看 GPU 数量
print(f"Number of GPUs: {torch.cuda.device_count()}")
# 4. 查看当前 GPU 的名称 (比如: 笔者的是RTX 3050)
print(f"GPU Name: {torch.cuda.get_device_name(0)}")
|
如果你的输出呈现类似下面的模样, 那就 everything works!
Bash |
---|
| CUDA is available: True
PyTorch CUDA version: 12.1
Number of GPUs: 1
GPU Name: NVIDIA GeForce RTX 3050 Laptop GPU
|
常见问题汇总
torchaudio需要的torch版本不兼容
在进行 pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu126
时, 笔者愚见了这个问题
Bash |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | Installing collected packages: nvidia-cusparselt-cu12, mpmath, typing-extensions, triton, sympy, pillow, nvidia-nvtx-cu12, nvidia-nvjitlink-cu12, nvidia-nccl-cu12, nvidia-curand-cu12, nvidia-cufile-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, numpy, networkx, MarkupSafe, fsspec, filelock, nvidia-cusparse-cu12, nvidia-cufft-cu12, nvidia-cudnn-cu12, jinja2, nvidia-cusolver-cu12, torch, torchvision
Attempting uninstall: torchvision
Found existing installation: torchvision 0.20.1
Uninstalling torchvision-0.20.1:
Successfully uninstalled torchvision-0.20.1
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
torchaudio 2.5.1 requires torch==2.5.1, but you have torch 2.8.0+cu126 which is incompatible.
Successfully installed MarkupSafe-2.1.5 filelock-3.13.1 fsspec-2024.6.1 jinja2-3.1.4 mpmath-1.3.0 networkx-3.3 numpy-2.1.2 nvidia-cublas-cu12-12.6.4.1 nvidia-cuda-cupti-cu12-12.6.80 nvidia-cuda-nvrtc-cu12-12.6.77 nvidia-cuda-runtime-cu12-12.6.77 nvidia-cudnn-cu12-9.10.2.21 nvidia-cufft-cu12-11.3.0.4 nvidia-cufile-cu12-1.11.1.6 nvidia-curand-cu12-10.3.7.77 nvidia-cusolver-cu12-11.7.1.2 nvidia-cusparse-cu12-12.5.4.2 nvidia-cusparselt-cu12-0.7.1 nvidia-nccl-cu12-2.27.3 nvidia-nvjitlink-cu12-12.6.85 nvidia-nvtx-cu12-12.6.77 pillow-11.0.0 sympy-1.13.3 torch-2.8.0+cu126 torchvision-0.23.0+cu126 triton-3.4.0 typing-extensions-4.12.2
|
(1) 问题分析:
这是一个非常典型的 dependency conflict 问题
- 当前的环境里已经安装了一个叫做 torchaudio 的库,它的版本是 2.5.1
- 这个版本的 torchaudio 严格要求 PyTorch (torch) 的版本必须是 2.5.1
- 然而,我们刚刚运行的命令成功安装了 torch 的 2.8.0 版本
- 这就导致了冲突,torchaudio 包现在处于一个“损坏”状态,因为它依赖的 torch 版本不对
(2) 问题解决:
最简单粗暴的方式是, 在一条命令里同时更新 PyTorch 生态系统的所有主要组件 (torch, torchvision, torchaudio), 让 pip 为您找到它们之间相互兼容的版本
Bash |
---|
| # 此命令和之前的命令相比, 只是增加了 torchaudio
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
|
这样做的好处是: pip 会一次性地去解析这三个包的依赖关系, 并从指定的 cu126 仓库中下载它们各自最新的、并且相互兼容的版本(例如 torch-2.8.0, torchvision-0.23.0, torchaudio-2.8.0)
它会自动卸载旧的不兼容版本,并安装新的匹配版本,从而完美解决冲突 😍