适用场景:内网环境 / 网络受限 / pip 官方源无对应 CUDA 版本
核心问题:在线pip install torch时默认源找不到匹配 CUDA 的 wheel 包
解决方案:从 PyTorch 官方离线仓库下载对应 whl 文件,本地 pip install
一、背景与问题
在 CentOS / Ubuntu 等 Linux 服务器上,直接用 pip 安装 PyTorch 时经常遇到这样的问题:
ERROR: Could notfinda version that satisfies the requirementtorch==1.10.0+cu111 ERROR: No matching distribution foundfortorch==1.10.0+cu111这是因为PyPI 官方源上的 torch 包默认只带 CPU 版本,带 CUDA 的版本只发布在 PyTorch 官方的 whl 仓库里。网络受限或 pip 源未同步时,就会找不到。
解决思路很简单:手动从 PyTorch 官方 whl 仓库下载对应版本的.whl文件,离线安装。
二、下载离线 whl 包
2.1 找到正确的下载地址
PyTorch 官方离线仓库地址:
https://download.pytorch.org/whl/torch_stable.html
打开后按Ctrl+F搜索你需要的版本关键词,比如cu111+torch-1.10+cp38+linux。
2.2 版本号命名规则
以这个文件名为例:
torch-1.10.0+cu111-cp38-cp38-linux_x86_64.whl
| 字段 | 含义 | 对应你的环境 |
|---|---|---|
1.10.0+cu111 | Torch 版本 1.10.0,CUDA 11.1 | 按需选择 |
cp38-cp38 | Python 3.8 | 用python -V确认 |
linux_x86_64 | Linux 64 位 | 用uname -m确认 |
💡 常见 CUDA 版本对应关系:
cu102=CUDA 10.2,cu111=CUDA 11.1,cu113=CUDA 11.3,cu116=CUDA 11.6,cu118=CUDA 11.8,cu121=CUDA 12.1
2.3 直接下载
以CUDA 11.1 + Torch 1.10.0 + Python 3.8 + Linux x86_64为例:
直接用 wget 或 curl 下载
wgethttps://download.pytorch.org/whl/cu111/torch-1.10.0%2Bcu111-cp38-cp38-linux_x86_64.whl或者用 curl
curl-Ohttps://download.pytorch.org/whl/cu111/torch-1.10.0%2Bcu111-cp38-cp38-linux_x86_64.whl如果服务器没法直连外网,在本机浏览器打开链接下载后,再scp/rz传到服务器上。
三、安装步骤
3.1 准备 Python 环境(推荐 Miniconda)
如果你还没装 Python 环境,建议用 Miniconda 管理,避免和系统 Python 冲突。
Miniconda 下载地址:
https://repo.anaconda.com/miniconda/
选择对应系统的安装包,以Linux x86_64为例(当前最新版):
wgethttps://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh安装:
给执行权限
chmod+x Miniconda3-latest-Linux-x86_64.sh执行安装(按提示一路 yes 或加 -b 静默安装)
shMiniconda3-latest-Linux-x86_64.sh-b-p/home/$USER/miniconda3激活
source/home/$USER/miniconda3/bin/activate创建独立环境
conda create-ntorch110python=3.8-yconda activate torch1103.2 pip 离线安装 torch
进入 whl 文件所在目录
cd/path/to/whl/安装(注意文件名不要有 %2B,实际下载后文件名是 +)
pipinstalltorch-1.10.0+cu111-cp38-cp38-linux_x86_64.whl⚠️ 如果下载后的文件名中
+被编码成了%2B,安装前先重命名:mv torch-1.10.0%2Bcu111-cp38-cp38-linux_x86_64.whl torch-1.10.0+cu111-cp38-cp38-linux_x86_64.whl
如果需要 torchvision / torchaudio,也在同一个仓库里下载对应版本后一起装:
示例:torchvision 0.11.1 + cu111 + cp38
pipinstalltorchvision-0.11.1+cu111-cp38-cp38-linux_x86_64.whl四、验证安装
python-c'import torch; print(torch.__version__); print(torch.cuda.is_available())'预期输出:
1.10.0+cu111
True
如果cuda.is_available()返回False,检查:
确认系统 CUDA 驱动版本
nvidia-smi确认 torch 编译时的 CUDA 版本
python-c'import torch; print(torch.version.cuda)'torch 的 CUDA 版本(如 11.1)不需要和系统驱动完全一致,但驱动版本必须 ≥ torch 编译时的 CUDA 版本。比如驱动是 450+ 就能跑 CUDA 11.1。
五、踩坑清单
| 现象 | 排查点 |
|---|---|
No matching distribution | pip 源没同步 CUDA 版本,必须用离线 whl |
pip install报文件名找不到 | %2B没替换成+,手动重命名 |
torch.cuda.is_available()返回 False | 驱动版本太低;或装了 CPU-only 的 whl(文件名里没 cuXXX) |
ImportError: libcudart.so.X.Y | 系统 CUDA 没装或 LD_LIBRARY_PATH 没配 |
| conda 环境里 pip 装完 import 报错 | 确认 pip 是 conda 环境里的 pip:which pip |
| Python 版本不匹配 | cp38 对应 3.8,cp39 对应 3.9,下错版本会报not a supported wheel |
六、小结
离线安装 PyTorch 就三步:
- 找对包:去
https://download.pytorch.org/whl/torch_stable.html按 CUDA + Python + 系统筛选 - 下回来:wget 或浏览器下载,注意
+号别被转义 - pip install:在目标环境里直接装 whl 文件
有问题的在评论区贴报错,我看到会回。