内网离线安装 PyTorch 必须严格匹配 torch、torchvision、torchaudio 三者版本及环境标识(CUDA 版本、Python 编译标记 cp310、系统架构 linux_x86_64),先装 torch,再用 --no-deps 装其余两个,并手动部署 cuDNN 等系统库。

直接结论:别用 pip install torch 在内网服务器上硬试,90% 会失败;必须提前下载匹配的 torch、torchvision、torchaudio 三个 .whl 文件,并控制安装顺序和依赖策略。
怎么确认目标服务器环境该下哪个 .whl 文件
离线安装失败的第一大原因,就是下了错版本的包。Linux 下必须三者严格对齐:
-
python --version—— 看清是cp39还是cp311(不是 Python 3.9/3.11,而是编译标记) -
nvidia-smi或nvcc --version—— 确认 CUDA 驱动支持的最高版本(比如显示12.1,就选+cu121;若没 GPU,选+cpu) -
uname -m—— 输出x86_64就对应linux_x86_64,aarch64则要找linux_aarch64版本
例如:Python 3.10 + CUDA 11.8 + x86_64 → 应下载 torch-2.3.1+cu118-cp310-cp310-linux_x86_64.whl,而不是 torch-2.3.1-cp310-cp310-linux_x86_64.whl(后者是 CPU 版,GPU 环境装了也用不上 CUDA 加速)。
pip install 时为什么总报 “requires torch>=2.0” 却装不上
这是典型的依赖循环触发:你先装 torchvision,它自动尝试拉取 torch,但内网没源,就卡死或退回到 CPU 版。正确做法是手动断开依赖链:
立即学习“Python免费学习笔记(深入)”;
- 先装主包:
pip install torch-2.3.1+cu118-cp310-cp310-linux_x86_64.whl - 再装配套库,加
--no-deps参数避免重装torch:pip install torchvision-0.18.1+cu118-cp310-cp310-linux_x86_64.whl --no-deps - 同理装
torchaudio:pip install torchaudio-2.3.1+cu118-cp310-cp310-linux_x86_64.whl --no-deps
注意:这三个包的版本号前缀(如 2.3.1)、CUDA 标识(+cu118)、Python 标识(cp310)必须完全一致,否则运行时报 ImportError: cannot import name 'xxx' from 'torch'。
为什么装完 import torch 还报 libcudnn.so.8: cannot open shared object file
PyTorch 的 .whl 包只打包了 Python 层和 CUDA kernel,不包含底层系统级库(如 cuDNN、NCCL)。这在离线环境中极易被忽略:
- 如果目标服务器已有 NVIDIA 驱动(
nvidia-smi可运行),但没装 cuDNN,需单独下载对应 CUDA 版本的 cuDNN 安装包(如cudnn-linux-x86_64-8.9.7.29_cuda11.x-archive.tar.xz),解压后把lib目录下的文件复制到/usr/local/cuda/lib64/,再执行ldconfig - 若无法安装系统级库(权限受限),只能退回到 CPU 版 PyTorch:
torch-2.3.1-cp310-cp310-linux_x86_64.whl,并确保torchvision和torchaudio也都用-cpu后缀版本
这个环节没有报错提示,只有运行模型时才暴露——所以务必在 import torch 后立刻执行 torch.cuda.is_available() 验证。
真正麻烦的从来不是下载几个文件,而是版本字符串里那一长串标记(+cu118-cp310-linux_x86_64)每一段都得对上,漏一个字符,轻则功能缺失,重则整个环境不可用。别信“差不多能用”,PyTorch 对 ABI 兼容性极其敏感。


















