用阿里云镜像安装指定 CUDA 版本的 PyTorch + 本地 wheel 缓存复用
用阿里云镜像安装指定 CUDA 版本的 PyTorch 本地 wheel 缓存复用在国内装 PyTorch最烦的两件事一是想精确锁定 CUDA 版本却总装错二是同一个版本要在好几台机器、好几个虚拟环境里反复下载既费时间又费流量。这篇教程解决两个问题用阿里云镜像安装指定 CUDA 版本的 PyTorch以及把常用版本的 wheel下载到本地一次之后在任意环境离线复用。赶时间的话直接抄下面这一段三条命令即可想知道每一步为什么这么写再往下看详解。下面的export、${VAR//./}等写法针对bash / zshLinux、macOS。Windows 请把export换成setcmd或$env:PowerShell路径用反斜杠。速查复制即用# --- 配置只改这一段---exportCUDA_TAGcu128# CUDA 标签cu118 / cu121 / cu124 / cu128 …exportPY_VER3.10# 目标 Python 版本exportTORCH_VER2.7.1# PyTorchexportTV_VER0.22.1# torchvisionexportTA_VER2.7.1# torchaudioexportTORCH_MIRRORhttps://mirrors.aliyun.com/pytorch-wheels/${CUDA_TAG}/exportWHEEL_DIR$HOME/data/wheels/torch${TORCH_VER//./}_${CUDA_TAG}_py${PY_VER//./}# --- A. 直接联网安装 ---pipinstalltorch${TORCH_VER}${CUDA_TAG}torchvision${TV_VER}${CUDA_TAG}torchaudio${TA_VER}${CUDA_TAG}\-f$TORCH_MIRROR# --- B. 下载到本地在临时环境里执行---conda create-y-nwheel_dlpython$PY_VERconda activate wheel_dlmkdir-p$WHEEL_DIRpython-mpip download--dest$WHEEL_DIR--only-binary:all:-f$TORCH_MIRROR\torch${TORCH_VER}${CUDA_TAG}torchvision${TV_VER}${CUDA_TAG}torchaudio${TA_VER}${CUDA_TAG}conda deactivateconda remove-y-nwheel_dl--all# --- C. 离线复用在目标环境里执行---conda create-y-nmyprojpython$PY_VERconda activate myproj pipinstalltorch${TORCH_VER}${CUDA_TAG}torchvision${TV_VER}${CUDA_TAG}torchaudio${TA_VER}${CUDA_TAG}\--no-index-f$WHEEL_DIR版本配套表torch / torchvision / torchaudio / CUDA / Python装 PyTorch 本质是凑一套配套版本torch torchvision torchaudio 必须成套再叠加一个该 torch 版本支持的 CUDA tag 和 Python 区间少一处对不上就会装失败或运行报错。下表覆盖常用的 2.12.7数据来自 PyTorch 官方 previous-versions 页与 torchvision 官方说明PyTorchtorchvisiontorchaudio可用 CUDA tagPython2.7.10.22.12.7.1cu118 / cu126 / cu1283.9 – 3.132.7.00.22.02.7.0cu118 / cu126 / cu1283.9 – 3.132.6.00.21.02.6.0cu118 / cu124 / cu1263.9 – 3.122.5.10.20.12.5.1cu118 / cu121 / cu1243.9 – 3.122.5.00.20.02.5.0cu118 / cu121 / cu1243.9 – 3.122.4.10.19.12.4.1cu118 / cu121 / cu1243.8 – 3.122.3.10.18.12.3.1cu118 / cu1213.8 – 3.122.2.20.17.22.2.2cu118 / cu1213.8 – 3.112.1.20.16.22.1.2cu118 / cu1213.8 – 3.11配套规律方便推算表里没列出的 patch 版本torchvision 与 torch 同步递增torch 2.5 → tv 0.20、2.6 → 0.21、2.7 → 0.22次版本一起 1patch 号也对齐torch 2.7.1 → tv 0.22.1。torchaudio 版本号与 torch 完全一致torch 2.7.1 → torchaudio 2.7.1。两个常用 CUDA tag 的反查cu128torch2.7.0 起才有2.6 及更早没有。cu118torch 2.0 2.7 一路都支持是兼容性最好的「老黄金」tag。准备把可变项抽成环境变量上面那个配置块就是把「版本 / CUDA / 路径」这些会变的东西集中到一处方便自己和别人改。几点说明CUDA_TAG怎么选看你的 NVIDIA 驱动支持的 CUDA 版本nvidia-smi右上角的CUDA Version是上限。pip 装的 wheel自带 CUDA 运行库所以不需要预装 CUDA Toolkit只要驱动够新即可。torch / torchvision / torchaudio三者版本要配套如2.7.1 / 0.22.1 / 2.7.1否则会装不上或运行报错。${TORCH_VER//./}是把2.7.1里的点去掉变成271只为让目录名好看、好区分。最终WHEEL_DIR会是类似~/data/wheels/torch271_cu128_py310的样子。方法一直接安装指定 CUDA 版本的 PyTorch最简单的形式阿里云镜像 -f就能把范围限定到 cu128 这一目录pipinstalltorch torchvision torchaudio-f$TORCH_MIRROR想精确锁版本就把版本号写全pipinstall\torch${TORCH_VER}${CUDA_TAG}\torchvision${TV_VER}${CUDA_TAG}\torchaudio${TA_VER}${CUDA_TAG}\-f$TORCH_MIRROR原理-f--find-links把阿里云的 PyTorch wheel 目录当作下载源该目录里就是torch-2.7.1cu128-cp310-...whl这类文件。cu128这个后缀PEP 440 里的local version用来明确锁定 CUDA 12.8 的构建避免 pip 选到别的 CUDA 版本比如 PyPI 上的默认构建。建议先建一个干净环境再装避免污染 baseconda create-y-nmyprojpython$PY_VERconda activate myproj装完验证importtorchprint(torch.__version__)# 2.7.1cu128print(torch.cuda.is_available())# Trueprint(torch.version.cuda)# 12.8方法二把 wheel 下载到本地跨环境复用适用场景同一个 PyTorch 版本要在好几台机器 / 好几个虚拟环境里用。下载一次存到本地以后直接离线安装省时省流量光是nvidia-cudnn这类依赖就有几百 MB。关键前提Python 版本要对得上wheel 文件名里带着cp310CPython 3.10、linux_x86_64这些标签pip只会安装与当前解释器、当前平台匹配的 wheel。所以下载时要在「目标 Python 版本」的环境里下复用时目标环境的 Python 版本也必须一致。这就是为什么下面两步都要先建对应版本的环境。第一步建临时环境 → 下载到本地下载这步只是为了拿到「正确的 Python 版本」环境本身用完就删所以叫临时环境# 1) 临时环境只为锁定 Python 版本下载完即删conda create-y-nwheel_dlpython$PY_VERconda activate wheel_dl# 2) 把 torch 全家桶 所有依赖下载到本地mkdir-p$WHEEL_DIRpython-mpip download\--dest$WHEEL_DIR\--only-binary:all:\-f$TORCH_MIRROR\torch${TORCH_VER}${CUDA_TAG}\torchvision${TV_VER}${CUDA_TAG}\torchaudio${TA_VER}${CUDA_TAG}# 3) 下载完删掉临时环境conda deactivate conda remove-y-nwheel_dl--all不用 conda 的话venv 也行前提是系统里已装好对应版本的 Pythonpython3.10-mvenv /tmp/wheel_dlsource/tmp/wheel_dl/bin/activate# …执行上面的 pip download…deactivaterm-rf/tmp/wheel_dl这里--only-binary:all:的作用是强制只下预编译的 wheel绝不退回去下源码包再本地编译。torch 这套依赖其实都有 wheel多数时候加不加都一样但它是给离线复用上的保险——万一某个依赖被下成源码包到离线机器上用--no-index安装时就得现场编译要编译器、可能还缺别的依赖离线就废了。另外pip download默认会把 torch 的全部依赖numpy、pillow以及 cu128 自带的nvidia-*库等一并下载所以$WHEEL_DIR是一个「自包含」目录。第二步建目标环境 → 离线安装到任意机器上先建一个同样 Python 版本的环境再从本地目录离线装# 1) 目标环境Python 版本必须和下载时一致conda create-y-nmyprojpython$PY_VERconda activate myproj# 2) 完全离线安装--no-index 让 pip 只在本地目录里找包pipinstall\torch${TORCH_VER}${CUDA_TAG}\torchvision${TV_VER}${CUDA_TAG}\torchaudio${TA_VER}${CUDA_TAG}\--no-index\-f$WHEEL_DIR-f指向哪儿都行 —— 可以是~/data/wheels/...也可以是放进项目仓库里的相对路径例如pipinstalltorch2.7.1cu128torchvision0.22.1cu128torchaudio2.7.1cu128\--no-index-fexternal/wheels/torch271_cu128_py310/复用的三条硬约束Python 版本要一致py310的 wheel 装不进 3.9 / 3.11 的环境。操作系统 / 架构要一致linux_x86_64的 wheel 不能用在 macOS / Windows / ARM。正因如此目录名里带上py310、cu128一眼就能区分该用哪一份。小贴士依赖下载慢可选提速torch 三件套靠-f从阿里云下但numpy、nvidia-*等普通依赖默认走官方 PyPI。如果你连 PyPI 慢给命令再加一个-i https://mirrors.aliyun.com/pypi/simple/让依赖也走国内镜像。要是你本来下得就快或已全局配过镜像不加完全没问题。机器上有多个 Python 时把pip换成python -m pip更稳妥能确保用的是当前环境的 pip。如果阿里云某个 CUDA 标签缺包可改用 PyTorch 官方源--index-url https://download.pytorch.org/whl/${CUDA_TAG}。注意官方源用--index-url阿里云这个目录用-f两者不一样。