刚入行那会儿但凡有人问“Win10 下怎么装 PyTorch”我的第一反应都是甩过去一条 pip 命令。后来帮别人排查环境问题排到自己怀疑人生才意识到安装 PyTorch 这件事真正的分水岭不是“敲出那条命令”而是“装之前有没有想清楚 Anaconda、虚拟环境和 CUDA 版本之间的关系”。这篇东西就把我在 Win10 上用 Anaconda 装 PyTorch 的完整思路、实操命令和踩坑记录整理出来适合刚从零起步的新手也适合被各种奇怪报错困扰的中级用户。核心目标只有一个让你装完不是“能跑”而是“知道它为什么能跑”。1. 为什么我用 Anaconda 而不是直接装 Python1.1 装 PyTorch 最大的风险不是装不上而是把系统环境搞乱很多人觉得安装 PyTorch 就是“打开命令行按个回车”但实际项目里最头疼的往往不是 PyTorch 本身而是它和 numpy、opencv、pandas 这些包之间的版本纠缠。比如某个老项目需要 numpy 1.21而新项目用 PyTorch 时又被依赖拉到了 numpy 1.26两个项目放在同一个 Python 环境里早晚要打架。Anaconda 的价值在这里就体现出来了它自带的 conda 管理工具可以创建相互隔离的虚拟环境。每个环境里有自己独立的 Python 解释器和包集合玩坏了直接删掉重建base 环境永远是干净的。我用这个方法在同一个开发机上同时维护过三个环境一个跑旧版 TensorFlow一个跑最新 PyTorch还有一个专门做数据处理彼此互不干扰。1.2 Anaconda 和 Miniconda 到底选哪个Anaconda 默认带了一堆科学计算包装完体积通常几个 G适合不想折腾基础环境的人。Miniconda 只带 conda 和最小依赖体积小、安装快我会更推荐有一定基础或不想被预装包绑架的朋友选 Miniconda。标题里既然写了“Anaconda”下面都按完整版 Anaconda 来写。其实安装完后续操作完全一样因为真正干活的是 conda 这条命令不是自带的 IDE 或预装包。1.3 安装 Anaconda 时最关键的选项Add to PATH安装过程中的一个选项很多人会忽略是否把 Anaconda 加入系统 PATH。勾选 Add to PATH以后直接在 PowerShell 或 CMD 里敲 conda 就有反应但可能会和你机器上已有的 Python 抢“默认解释器”。不勾选更干净但你必须通过“开始菜单里的 Anaconda Prompt”来使用 conda。我的建议是默认不勾选用 Anaconda Prompt 操作。这样你不用承担 PATH 顺序混乱带来的风险也足够应付绝大多数场景。如果实在想在普通终端里用 conda装完后手动执行一次初始化指令即可稍后讲到环境激活时再细说。2. 环境准备先建好独立空间再下载 PyTorch2.1 第一步先创建虚拟环境别直接往 base 里装很多教程告诉你安装 PyTorch 之前要先建虚拟环境但没说清楚为什么。我举个例子你今天因为 PyTorch 更新装了一堆新依赖明天另一个项目装老版本 PyTorch 时发现 torchvision 要求某个旧版 numpyconda 就会试图把 base 里的 numpy 降级降级完新项目挂了老项目却还是跑不起来。所以我的习惯是任何项目都先执行下面这条命令conda create -n pytorch_env python3.10这里的pytorch_env是环境名称可以随便起比如torch、dl、gpu都行。关键在于python3.10它解决了“用哪个 Python 版本”的问题。2.2 Python 版本选 3.10 还是 3.12选 Python 版本确实不用太激进。PyTorch 一般会在新版本发布后的几个月内适配最新 Python但 Windows 平台上我吃过“版本太新导致某些扩展包没有预编译轮子”的亏。目前 3.9 到 3.11 都比较稳。我更推荐 3.10原因很朴素常用的包在 3.10 上基本都有预编译好的二进制包装起来快兼容问题少。如果你没有特殊理由直接照抄 3.10 就行。2.3 为什么要用 conda activate 而不是直接 pip install创建完环境后需要激活conda activate pytorch_env激活之后当前终端的所有操作都发生在这个独立环境里。你会看到命令行提示符前面多了一个(pytorch_env)这说明你已经在环境里了。此时再执行pip install装的包才属于这个环境不会污染 base也不会被系统的其他 Python 干扰。这里有个新手常见的误区conda 是包管理器pip 也是包管理器但两者装包的位置不总是一致。确认自己到底在哪非常关键。装完 PyTorch 后如果import torch失败90% 是当前命令行实际用的是另一个环境的 Python。3. PyTorch 版本和 CUDA 版本怎么选直接决定了你装的包对不对3.1 先搞清楚自己电脑里有没有可用的显卡PyTorch 分成 CPU 版和 GPU 版两者的差别不是“功能多少”而是“能不能用显卡加速训练”。训练一个稍大的模型时GPU 的提速效果往往是几十倍量级的。先检查硬件。打开任务管理器看“性能”标签页里有没有 GPU 一项。如果有独立显卡那就还需要确认显卡驱动是不是正常安装。最直接的方法是在命令行执行显卡驱动自带的监控指令通常能输出驱动版本号、驱动总线和显存信息。有这一行输出才说明显卡是可用状态。如果没有独立显卡或者恰好在某台只有核显的笔记本上操作那就老老实实装 CPU 版。CPU 版不用管 CUDA安装命令更简单日常跑结构简单的网络、做推理验证完全够用。3.2 CUDA 到底是什么和显卡驱动有什么区别这是 Windows 用户最容易混乱的点。显卡驱动由显卡厂商提供负责操作系统和显卡硬件之间的通信。CUDA 版本显卡厂商提供的并行计算平台深度学习框架靠它调用显卡的计算单元。PyTorch 的 GPU 版安装包里面已经内置了一套运行所需的 CUDA 库不需要你手动去官网下载 CUDA Toolkit 再配环境变量。所以关键概念是PyTorch 安装包里带的 CUDA 只要求你的显卡驱动不低于某个最低版本而不要求系统里已经装好了同名版本的 CUDA Toolkit。你只需要关注“显卡驱动当前支持多高的 CUDA 版本”这一项。驱动支持的上限如果高于或等于 PyTorch 需要的版本直接装就行驱动上限低的话就得选一个较旧的 PyTorch 版本。3.3 CPU 版和 GPU 版的选择对照条件建议安装版本后续是否需要关注 CUDA有独立显卡驱动较新GPU 版需要检查驱动支持上限有独立显卡但驱动较旧GPU 版对应旧 CUDA选和驱动匹配的老版本只有核显或无可用显卡CPU 版完全不用考虑虚拟机、远程桌面环境CPU 版为主GPU 通常不可直通3.4 PyTorch 版本与 CUDA 版本的大致对应PyTorch 官方一般会同时发布多个 CUDA 版本的安装包例如PyTorch 2.0 时期常见的是 cu117、cu118PyTorch 2.1 时期常见的是 cu118、cu121PyTorch 2.2 到 2.4 时期常见的是 cu118、cu121部分版本提供 cu124PyTorch 2.5 及之后cu121、cu124、cu126 成了主流可选这个表格迟早会过时所以我更建议你安装前打开 PyTorch 官网的安装页选择“Windows conda / pip”它会直接给出对应命令。关键是理解数字背后的含义cu118 表示这个包面向 CUDA 11.8cu121 表示 CUDA 12.1。如果你在驱动检查里看到驱动支持上限是 CUDA 12.x那么选 cu121 或更新一点的版本通常没问题如果上限停在 11.8 或更低就需要找老版本的 PyTorch。4. 安装命令拆解换源、执行、验证这三件事一起做4.1 先把 conda 和 pip 的下载源搞定Win10 下安装 PyTorch 最大的实际障碍不是选择困难而是网络。Anaconda 官方的包仓库和 PyTorch 官方下载源在国外直连时经常出现连接超时、下载到一半中断、更卡的情况。解决办法是用国内镜像源把默认源替换掉。conda 换源方式是在终端里执行配置命令把频道地址改到一个国内镜像站。不同镜像站路径可能略有差异原则是照着镜像站文档给出的地址填就行。我一般这样操作# 以某镜像站为例把地址换成实际可用的镜像地址 conda config --add channels https://mirrors.example.com/anaconda/pkgs/main conda config --add channels https://mirrors.example.com/anaconda/pkgs/free conda config --add channels https://mirrors.example.com/anaconda/cloud/conda-forge conda config --set show_channel_urls yespip换源则更简单# 同样是示例地址替换成你实际使用的镜像源 pip config set global.index-url https://mirrors.example.com/pypi/simple设置完成后可以先执行conda info看当前 channel 列表有没有生效。别小看这一步我在安装时遇到的 90% 的下载超时问题都是因为源没换干净。4.2 我推荐的主安装命令pip 方式虽然标题写的是“借助 Anaconda 安装”但 Anaconda 在这里最核心的职责是环境管理。PyTorch 的 Windows 安装包在 pip 源里通常更新更及时且包内含 CUDA 运行库安装过程更省心。在已激活环境的前提下我这里以 “有显卡、用 CUDA 12.1 版本” 为例pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121这条命令拆开解释torchPyTorch 主库。torchvision图像和视频处理相关的工具库一般配套安装。torchaudio音频处理工具库做语音任务才需要不需要可以直接去掉。--index-url明确指定从哪个源下载。这里用的是 PyTorch 官方提供的 CUDA 12.1 轮子目录。如果你不想用 GPU把最后面的 cu121 换成 cpu 即可我不建议用默认 PyPI 装 CPU 版本因为默认源可能给你装成不带任何 CUDA 支持的版本后续想换又得折腾。4.3 conda 安装方式也值得知道如果你更倾向全用 conda 安装也可以这样装这里给出逻辑示意频道名称以官方安装页为准通常需要显式指定 PyTorch 的官方频道和配套频道conda install pytorch torchvision torchaudio pytorch-cuda12.1这个命令的坑在于如果不加pytorch-cuda这个占位包conda 很可能只给你装 CPU 版本。很多人在这一步踩过坑装完才发现torch.cuda.is_available()一直返回 False。4.4 下载到一半卡住怎么办无论用 conda 还是 pip下载大文件时都可能卡在“Downloading”状态。我的经验是先确认pip用的是不是国内镜像源如果还没有换源先换源再重试。加长超时时间pip --timeout 120 install ...不要反复按 CtrlC 中断再重试这样反而容易下载到一半后重新下载。等一会儿如果长时间没速度再中断重试。中大体积安装包需要磁盘空间C 盘空间不足也会导致解压失败。安装前可以看看剩余空间预留 5 G 以上比较稳。5. 装完之后三步验证是不是真的能用5.1 验证 import 是否成功激活环境后依次执行python -c import torch; print(torch.__version__)能打印出版本号说明基础安装成功。如果这一步报ModuleNotFoundError: No module named torch问题通常出在环境错位你激活的环境里根本没有 PyTorch。这时候先执行python -c import sys; print(sys.prefix)看看当前 Python 所在目录再检查这个目录是否属于你的pytorch_env环境。两个人说是同一个环境实际用了两个解释器的情况我见过太多次了。5.2 验证 CUDA 是否真的被识别下一步验证显卡python -c import torch; print(torch.cuda.is_available())返回True说明 PyTorch 已经识别到可用的显卡计算环境返回False说明装的很可能不是 GPU 版或者驱动版本太旧。这个时候先别急着重装先看版本信息python -c import torch; print(torch.version.cuda)如果torch.version.cuda为空那基本可以确定装成了 CPU 版。5.3 用一个小张量操作验证 GPU 真的在干活cuda.is_available()返回 True 并不代表模型训练就一定能顺利调用显存。我习惯再跑一个实际张量测试import torch x torch.rand(3, 3).cuda() y torch.rand(3, 3).cuda() z torch.mm(x, y) print(z)只要能正常输出一个 3x3 的张量结果说明数据流动、显存分配、基础算子链路都是通的。这一步比单纯的 is_available 更能暴露底层的驱动和运行库问题。5.4 确认环境归属不要装完发现又跑到 base 去了搞不清自己当前在哪个环境是所有后续问题的根源。建议把环境检查固化成习惯每次打开新终端先conda activate pytorch_env再执行python。在 PowerShell 中如果激活失败命令行前面没有出现环境名称说明 conda 没有初始化到当前 shell需要先在终端里执行一次 conda 的初始化动作再重新打开终端窗口。6. 安装过程中我踩过的坑与排查思路6.1 Windows PowerShell 激活环境失败第一次在 Win10 上用 PowerShell 激活 conda 环境时遇到过系统提示“无法加载配置文件因为在此系统上禁止运行脚本”。这不是 conda 或者 PyTorch 的问题而是 PowerShell 的默认执行策略限制。解决办法是用管理员身份打开 PowerShell执行Set-ExecutionPolicy -Scope CurrentUser RemoteSigned再重新打开终端conda activate就正常了。如果你不想改执行策略直接用 Anaconda Prompt 也行那个窗口默认已经配置好了。6.2 装完发现是 CPU 版这是一个体系性的错误我第一次用 conda 装 PyTorch 时天真地以为执行完conda install pytorch torchvision torchaudio就万事大吉。结果是torch.cuda.is_available()永远返回 False。查了一圈才发现这条命令默认拉取的是 CPU 版本必须单独指定pytorch-cuda版本号。如果依赖 pip 安装则要看清楚--index-url里是不是带了 cu 字样紧紧是pip install torch默认装出来的版本可能是 CPU 版本取决于你用的源。6.3 花了一小时排查 DLL 加载失败还有一个常见报错是 import torch 时出现找不到某个动态链接库的提示或者直接说“DLL load failed”。这种情况多半是显卡驱动版本太旧导致运行时所需的加速库无法正常加载。和系统里的旧 CUDA 环境变量发生冲突。排查思路是先检查驱动上限版本再看 PyTorch 包的版本是不是和驱动相差太大。如果驱动只能支持到 CUDA 11.x你却装了 cu121 的包出现动态库问题很正常。换成 cu118 或更老版本的包问题往往迎刃而解。6.4 环境被我搞乱之后最快的恢复方式是拔掉重来讲一个大多数人不太愿意面对的事实当环境依赖已经变成一团乱麻时花几十个小时去“修复”不如直接删掉重建。conda deactivate conda env remove -n pytorch_env -y conda create -n pytorch_env python3.10 conda activate pytorch_env这套操作下来往往只需要十几分钟就能回到干净的状态。很多刚入门的同学舍不得删环境担心重新装会踩同样的坑其实只要把换源、版本选择这些要点记住重建环境反而更快。我自己现在的原则是一旦环境里出现无法解释的依赖冲突第一反应就是备份代码删除环境从头来过。6.5 一个能帮你省下大量排查时间的小习惯最后分享一个我个人的工作习惯把验证脚本存成一个独立文件比如check_torch.py里面包含三行核心验证逻辑import sys import torch print(Python:, sys.prefix) print(PyTorch:, torch.__version__) print(CUDA available:, torch.cuda.is_available()) if torch.cuda.is_available(): print(torch CUDA:, torch.version.cuda)换环境、换机器、升级驱动之后先跑一遍这个脚本所有关键信息一目了然。很多所谓的“安装失败”其实只是“在一个没想到环境里运行了一个没想到的版本”。有了这个脚本你就不用每次都临时敲命令出问题也能第一时间判断是环境问题、驱动问题还是版本问题。
阅读完成 · 觉得有帮助?