其实安装 PyTorch 这件事,最让人头疼的往往不是 PyTorch 本身,而是环境。我见过不少人兴冲冲跑到 VS Code 里敲pip install torch,等了大半天装完,结果一运行就报ModuleNotFoundError,或者torch.cuda.is_available()一直返回 False,甚至卡在第一步——终端里输conda activate,结果提示“无法将‘conda’项识别为 cmdlet、函数、脚本文件或可运行程序的名称”。
这个标题看起来只有“VS Code”和“PyTorch”两个词,背后其实是一整套环境联动问题。这篇就按我实际走过的路子,把 Anaconda 安装、虚拟环境创建、PyTorch 选择 CPU 还是 CUDA 版本、VS Code 解释器切换,以及最常见的那几个报错,一次讲透。不管你是刚接触深度学习的小白,还是被环境折腾过几次的老手,照着下面的顺序走一遍,基本能把环境问题一次性清干净。
1. 先理清思路:为什么“装个 PyTorch”经常翻车
1.1 PyTorch 不是一个普通的 Python 包
PyTorch 跟普通的 Python 库不太一样。装一个requests或者numpy,本质上就是下载一个.whl文件放进 site-packages,但 PyTorch 带了一堆底层二进制依赖,尤其是跟 CUDA 绑定的部分,涉及显卡驱动、CUDA 运行时库、cuDNN 这些层层叠叠的组件。所以安装 PyTorch 不是在“装一个包”,而是在“配一套环境”。
这套环境里,最容易出问题的环节有三个:
- Python 解释器和虚拟环境的管理——这里通常靠 Anaconda 或者 venv 来解决;
- PyTorch 包本身的选择——选 CPU 版还是 CUDA 版,选哪个 CUDA 版本;
- 编辑器里的解释器指向——VS Code 里选的解释器到底是不是你装了 PyTorch 的那一个。
这三层任何一层对不上,结果都一样:import torch要么直接报错,要么好不容易导入了,GPU 却不工作。
1.2 安装链路里最常见的三个卡点
结合我看到的搜索记录,大多数人翻车都集中在三个地方。
第一个卡点是 conda 命令根本不识别。很多人装完 Anaconda 后在 PowerShell 里敲conda,系统直接回一句“无法将‘conda’项识别”。这背后的原因很直白——安装 Anaconda 时没有把 conda 的可执行文件路径加到系统环境的 PATH 里,或者安装之后没有重开终端。
第二个卡点是 CUDA 和 PyTorch 版本对不上。有些人根据网上教程直接装了一个 CUDA 12.1 的 PyTorch,结果自己电脑上的驱动只支持到 CUDA 11.8,跑起来直接报错。或者反过来,显卡驱动很新,但 PyTorch 版本太旧,导致torch.cuda.is_available()一直返回 False。
第三个卡点是下载太慢或装错版本。官方源在国内的下载速度经常让人崩溃,有人就去镜像站随便装了一个 torch,结果装回来才发现是 CPU 版,或者跟 Python 版本不兼容。
这些坑,本质上都可以通过“先规划、再动手”来避开。
1.3 我建议的安装顺序
基于前面说的三个卡点,我建议的安装顺序是固定的,不要跳步:
- 装好 Anaconda,让 conda 命令可用;
- 用 conda 创建一个全新的虚拟环境,并把 Python 版本固定下来;
- 根据显卡情况选择对应 CUDA 版本的 PyTorch 安装命令;
- 回到 VS Code,把解释器切到这个新建的环境,写代码跑一遍验证。
这个顺序看起来没什么技术含量,但真的能解决绝大多数“安装失败”和“装完用不了”的问题。下面是每一步的具体操作。
2. 先把 Anaconda 装到位,别为了省事直接裸装 Python
2.1 为什么我推荐 Anaconda
经常有新手问:我已经装了 Python,直接pip install torch不就行了吗?为什么要多装一个 Anaconda?
我的回答是:裸装 Python 不是不行,但你后面一定会被环境问题反复折磨。深度学习项目对 Python 版本和依赖库的敏感度非常高,你今天为 PyTorch 装了几个包,明天可能又因为 TensorFlow 或者 ONNX 导出需要另一个版本,到时候两个项目互相抢依赖,能把人折腾疯。
Anaconda 自带 conda 这个环境管理工具,你可以随时创建一套相互隔离的“小环境”。一个项目一个环境,互不干扰。装 PyTorch 的时候我一律建议用 conda 单独建一个环境来装,而不是直接装到 base 或者系统 Python 里。
2.2 下载与安装时的关键选项
去 Anaconda 官网下载安装包时,注意两个地方。
一是下载版本。官网默认展示的可能是最新版本,页面下方通常有 Installers 区域,里面有 Windows、macOS、Linux 三种系统的安装包。Windows 用户选 64-Bit Graphical Installer 就行。
二是安装过程中的勾选项。这一步非常关键,直接关系到最开始提到的“conda 无法识别”问题。安装向导进行到 “Advanced Installation Options” 这一步时,会有一个选项叫做“Add Anaconda3 to my PATH environment variable”,建议勾上它。勾选后,conda 的命令会被自动写入 PATH,之后在 VS Code 的终端里直接敲conda就能识别。
提示:如果不小心忘了勾,后面其实也有补救办法,我在第 6 章排查部分会专门讲怎么手动加 PATH。但能省的事就别等到后面再补,建议一步到位。
2.3 安装后验证 conda 是否可用
安装完成后,一定要重启一下终端(或者 VS Code 窗口),因为 PATH 环境变量的生效需要新开终端。然后执行:
conda --version如果输出类似conda 24.x.x,说明 conda 已经可以正常使用了。这一步不要省略,因为很多人装完直接开着旧的终端用,conda 同样不识别。
与此同时,可以把 VS Code 也提前装好。官方安装包直接下载安装即可,默认设置就够用。后面所有操作都在 VS Code 的终端里执行,记住这一点,不用再另外打开 Anaconda Prompt。
3. 创建独立的 PyTorch 虚拟环境:核心原因和完整命令
3.1 为什么要新建环境,而不是直接装进 base
我见过很多人图省事,直接在 conda 的 base 环境里装 PyTorch。短期看的确快,但后患不小。
conda 的 base 环境是 Anaconda 自带的基础环境,里面已经有一堆预装包。你往里塞深度学习框架很容易把依赖关系弄乱。而 PyTorch 对 Python 版本又有硬性要求,比如某个版本要求 Python 3.8 到 3.11,如果你的 base 里恰好是 3.12,装的时候就会出兼容性问题。
所以我强烈建议单独建一个环境,名字可以就叫pytorch。这样你以后写 L2 正则化实验、加载 CIFAR-10、把模型转成 ONNX 导出,都在这个环境里做,稳得很。
3.2 创建环境的完整命令
打开 VS Code 的终端(快捷键Ctrl+`),确认提示符能正常识别 conda 之后,执行:
conda create -n pytorch python=3.10 -y我来解释一下这条命令的含义:
create表示创建一个新环境;-n pytorch是给这个环境命名为 pytorch;python=3.10是指定环境的 Python 版本为 3.10。目前 PyTorch 对新版本 Python 的适配已经做得很好,3.10 是兼容性最稳的选择,不建议直接上 3.12,除非你确认当前 PyTorch 版本已经完整支持;-y是跳过安装确认提示,直接执行。
等待 conda 下载并配置好基础环境,看到done字样后,执行:
conda activate pytorch激活成功后,命令行提示符前面会出现(pytorch)字样。看到这个括号里的环境名,就说明你已经进入了 pytorch 这个虚拟环境。后面所有 PyTorch 相关的安装命令,都必须在这个状态下执行。
3.3 确认 Python 版本无误
进入环境后顺手验证一下 Python 版本:
python --version如果输出Python 3.10.x,就可以进入下一步了。这一步的意义在于:确保你之后安装的 PyTorch 包跟当前 Python 版本兼容,避免装到一半发现大版本不匹配。
4. 装 PyTorch 时,怎么判断该选 CPU 还是 CUDA 版本
4.1 先看你有没有 NVIDIA 显卡
这一步是整个安装流程的分岔口。记住一个原则:有 NVIDIA 独立显卡,就装 CUDA 版本;没有 NVIDIA 显卡,就装 CPU 版本。
如果你不确定自己的显卡型号,可以在 Windows 的任务管理器里点“性能”页签,左边看有没有“GPU”项,右边看 GPU 名称。如果显示的是 NVIDIA GeForce、NVIDIA RTX 之类的型号,那就可以走 CUDA 路线。如果显示的是 Intel UHD Graphics、AMD Radeon 或者 Apple Silicon 的 M 系列芯片,那老老实实装 CPU 版本。
4.2 查显卡驱动支持的 CUDA 版本
有 NVIDIA 显卡的话,还需要确认显卡驱动支持的 CUDA 版本。打开一个新的终端,执行:
nvidia-smi输出内容右上角有一行 “CUDA Version: 12.4”,这表示你的显卡驱动最高支持到 CUDA 12.4。这里有个容易误解的地方——这个值代表你安装的 NVIDIA 驱动能向下兼容的最高 CUDA 版本,不是你系统里已经装了 CUDA 工具包。也就是说,驱动支持 CUDA 12.4,不代表你必须装 12.4,你可以装更低一点的版本,比如 12.1,完全兼容。
官方给出的 PyTorch 安装命令里,目前常用的 CUDA 版本有 11.8、12.1、12.4、12.8 等。原则很简单:选择小于等于你驱动支持版本的 CUDA 即可。比如nvidia-smi显示 12.4,那你选 12.1 或 12.4 都可以;如果显示的是 11.8,那就老老实实选 11.8 的安装命令,别硬上 12.x。
注意:很多人会混淆两个概念——
nvidia-smi显示的 CUDA 版本和系统里实际安装的 CUDA Toolkit 版本。实际安装 PyTorch 时,我们不需要单独去 NVIDIA 官网下载安装 CUDA Toolkit,PyTorch 的 wheel 包里已经自带了一套运行所需的 CUDA 动态库。驱动支持到位就足够了。
4.3 CUDA 版本的安装命令
确认好驱动支持的 CUDA 版本后,清洗官方页面或使用官方源安装。以最新的 PyTorch 2.x 为例,如果走 pip 路线,在(pytorch)环境下执行:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121把命令尾部cu121换成你选定的 CUDA 版本即可。比如需要 12.4,就改成cu124。
如果走 conda 路线,命令是这样的:
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia这条命令会从 PyTorch 官方 conda 频道和 NVIDIA 频道分别拉取包。我给的建议是:能用 pip 就用 pip,因为 conda 频道经常在依赖解析上耗很久,而且 PyTorch 官方对 pip wheel 的更新通常更及时。
4.4 CPU 版本的安装命令
没有 NVIDIA 显卡,或者电脑是 Mac、普通办公本,直接装 CPU 版本就够了。CPU 版本同样能完成绝大多数深度学习实验,只是训练速度明显更慢。
CPU 版的 pip 安装命令是:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu国内用户如果从官方源下载速度太慢,可以在命令里配上国内镜像源,这一点我在下面会单独讲。
5. 在 VS Code 里把 PyTorch 环境真正用起来
5.1 安装完成后的必要验证
安装过程可能持续几分钟到几十分钟,取决于网络和包大小。装完之后,不要急着写模型,先在终端里做一次最小化验证:
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"如果你装的是 CUDA 版本,并且一切正常,会看到类似下面的输出:
2.1.2+cu121 True第一行是 PyTorch 版本号,第二行的True表示 CUDA 可用。如果输出False,说明 PyTorch 没有能正常调用显卡,原因大概率是前面说的 CUDA 版本不匹配,解决方案见第 6 章。
如果你装的是 CPU 版本,torch.cuda.is_available()返回False是正常的,不用慌。
5.2 切换 VS Code 解释器
这一步是很多人忽略的关键。终端里torch导入正常,不代表 VS Code 里新建的.py文件能正常import torch,因为 VS Code 里运行的 Python 解释器可能还是你系统里原来的 Python。
解决方法很简单。在 VS Code 中按Ctrl+Shift+P打开命令面板,输入Python: Select Interpreter,回车,在弹出的列表里找到pytorch这个环境(通常路径类似C:\Users\你的用户名\anaconda3\envs\pytorch\python.exe),选中它。
选完之后,VS Code 右下角状态栏会显示当前解释器是pytorch环境下的 Python。这样你在 VS Code 里直接运行代码文件时,用的就是装了 PyTorch 的解释器了。
5.3 新建文件,跑一个最简单的 PyTorch 程序
解释器切好之后,新建一个文件test.py,写上:
import torch x = torch.randn(3, 3) print(x) print("CUDA available:", torch.cuda.is_available())右键文件选择“在终端中运行 Python 文件”,或者按编辑器右上角的运行按钮。输出正常的话,说明整条链路已经通了。
这也是一段非常好的基础测试代码。torch.randn会生成一个 3x3 的张量,可以验证 PyTorch 的张量计算是否正常,同时torch.cuda.is_available()会确认 GPU 是否可用。
5.4 顺手配置好代码智能提示
VS Code 里安装一个官方扩展,用起来会更顺手。在扩展商店搜索:
- Python(微软官方,必须装)
- Pylance(配合 Python 扩展做代码补全和类型检查)
装完之后,在test.py里敲torch.的时候,会出现方法补全提示。这对后面写各种深度学习代码、手写 L2 正则化、搭建 ResNet18 之类的模型时都有很大帮助。
6. 安装过程中常见的三个报错,以及完整的排查思路
6.1 报错一:conda activate 提示“无法将‘conda’项识别”
这是我在开头提到过的典型症状,完整报错一般是:
conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,或验证路径是否正确。导致这个报错的原因只有一个:conda 的可执行文件不在系统 PATH 里。
解决办法有两种。第一种最省事,回到 Anaconda 安装包重新跑一遍安装向导,在 “Advanced Installation Options” 那里把 “Add Anaconda3 to my PATH environment variable” 勾上。装完后重启终端,conda 就能识别了。
第二种是手动加 PATH,不想重新安装的就用这个。按Win键,搜索“编辑系统环境变量”,打开后点“环境变量”,在“系统变量”里找到Path这一项,点击编辑,新增三行路径:
C:\Users\你的用户名\anaconda3 C:\Users\你的用户名\anaconda3\Scripts C:\Users\你的用户名\anaconda3\Library\bin注意把“你的用户名”替换成你的实际用户名。保存后重启终端,再执行conda --version验证。
还有一个细节:如果是通过 VS Code 的终端操作,改了 PATH 之后,一定要完全关闭 VS Code 再重新打开,因为编辑器会缓存环境变量。
6.2 报错二:torch.cuda.is_available() 返回 False
这种情况最折磨人:PyTorch 装上了,张量计算也正常,但就是检测不到显卡。
按下面的顺序排查:
第一步,先确认你装的是不是 CUDA 版本。在终端里执行:
python -c "import torch; print(torch.__version__)"如果版本号末尾带有+cu121、+cu124这类标记,说明装的是带 CUDA 的版本。如果末尾是+cpu,说明装的就是 CPU 版,返回 False 太正常了。
第二步,确认驱动支持版本是否满足要求。执行nvidia-smi看右上角的 CUDA Version,然后对照你安装的 PyTorch 对应的 CUDA 版本。如果不匹配,就得重装。
重装方式:先彻底卸载当前版本:
pip uninstall torch torchvision torchaudio -y然后按第 4 章的对应命令重新安装。
第三步,检查是不是显卡驱动本身有问题。在设备管理器的“显示适配器”里看 NVIDIA 设备是否正常,如果有黄色感叹号,需要重装显卡驱动。
6.3 报错三:下载太慢,或者镜像源装出来的 torch 不完整
官方源下载 PyTorch 在国内速度确实不稳定,尤其是几个 GB 的 wheel 包,等半天是常事。换国内镜像源是最直接的办法。
pip 命令里加镜像源,如下:
pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple这里要注意一个坑:通过通用 PyPI 镜像安装 PyTorch,拿到的可能是默认版本,不一定是官方安装命令里指定的 CUDA 专用版本。如果你要精确匹配 CUDA 版本,我更推荐这样操作:先启用镜像源,再从官方指定 index 地址安装。
一个比较实用的方案是,把下载源临时切到清华镜像,然后使用老版本的安装命令:
pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple --extra-index-url https://download.pytorch.org/whl/cu121这样 PyTorch 相关包会优先从官方 CUDA 专用源拉取,其他依赖走清华镜像,兼顾速度和版本准确性。不过这个操作对普通用户来说稍微复杂一点,如果你只是想快速跑通 CPU 版,直接用清华镜像装默认 torch 就行。
6.4 依赖冲突的处理思路
在(pytorch)环境里单独安装通常不会出现依赖冲突,但偶尔会有提示某个已安装的包版本不兼容。这种情况下不要盲目去降级其他包,先看清楚冲突的是哪个。
最常见的冲突对象是 numpy。有些深度学习库要求 numpy 版本必须低于某个值,而 PyTorch 官方 wheel 可能自动升到了高版本。处理方式是:
pip install "numpy<2"强制装到 1.x 版本。遇到其他依赖冲突,也可以用固定版本号的方式限制。
如果环境已经乱到无法收拾,我给出的最终手段是把环境删了重建,速度反而比排查依赖要快得多:
conda deactivate conda remove -n pytorch --all conda create -n pytorch python=3.10 -y这个习惯也是我一直在用的——虚拟环境的好处就在这里,坏了就重建,反正装 PyTorch 整套流程跑下来也就一二十分钟,比在一个脏环境里排查半天依赖高效得多。
我在实际安装中体会最深的一点就是:不要急着敲安装命令,先把环境规划清楚。只要 Anaconda 装到位、虚拟环境单独建好、CUDA 版本确认无误、VS Code 解释器切换正确,这四个关键节点守住,后面的深度学习之路会顺畅很多。如果你卡在某个环节,优先检查环境归属——终端里是不是(pytorch)状态、VS Code 解释器是不是指向 pytorch 环境、torch.__version__后缀是不是你想要的 CUDA 版本。这三个地方对上了,环境基本就稳了。