前阵子在Windows机器上搭深度学习环境,最上头的一段就是装PyTorch。不是这框架本身多难搞,而是默认源在国内网络环境下的下载体验实在太折磨人——torch的wheel动辄一两百MB,加上依赖包轻轻松松上GB,经常下载到一半超时断流,重试几次直接报错,浪费的时间比真正配置的时间还多。后来换了国内镜像,几分钟就把全套装完,再用PyCharm把环境一配,整个流程才算真正完整。这篇文章就把这条最省事的路线完整记录下来:Windows下用国内镜像安装PyTorch,以及装完之后的PyCharm环境配置。给两种人看:一是想入坑深度学习但被环境安装劝退的新手;二是已经装了一部分,但在某个环节卡住的老哥们。
1. 装PyTorch之前,先把这三件事搞清楚
装任何大环境都怕"看着步骤开跑,跑到一半发现前提不对",尤其是PyTorch这种和Python版本、显卡驱动、虚拟环境都强相关的框架。宁可开头多花三分钟确认,也别后面花三小时排错。
1.1 Python版本和pip版本先对齐
PyTorch 2.x对Python版本有明确要求:2.3、2.4这一批支持Python 3.8到3.12,新一些的版本对3.13的适配也在陆续跟上。对于Windows场景,我建议直接装Python 3.10或3.11,兼容性最稳,几乎所有wheel都有对应版本,不会遇到"找不到匹配包"的尴尬。
先检查当前环境:
python --version pip --version如果pip版本偏老,先升级:
python -m pip install --upgrade pip这里有个新手容易忽略的点:pip提示Could not find a version that satisfies the requirement torch时,八成不是网络问题,而是Python版本或平台位数不对。Windows上先确认系统是64位、Python也是64位,这个在python启动信息的开头就能看到。32位Python基本没有对应的torch新版本可装,这是源头问题,走了弯路很难自己绕回来。
1.2 有没有NVIDIA显卡:决定CPU版还是GPU版
PyTorch的安装路线第一岔路口在这里——你的机器有没有可用的NVIDIA显卡。有RTX 30系、40系、GTX 16系这类N卡,训练速度会明显更快,走GPU版;只有AMD显卡或Intel核显,就老老实实走CPU版,用来学习、跑demo、调试代码完全够用。
怎么看显卡?最简单的方式是打开命令行输入:
nvidia-smi能看到完整的显卡信息、驱动版本,右上角还会显示一行CUDA Version。这行数字代表你的驱动支持的最高CUDA版本,不是"当前已经装了CUDA 12.4"的意思,很多新手在这里被绕晕。
如果提示找不到这个命令,就去设备管理器 → 显示适配器里看有没有NVIDIA字样。没有的话直接走CPU版路线,别纠结。
1.3 虚拟环境的取舍:conda还是venv
这个选择直接影响后续的包管理体验。我的习惯是:如果这台机器只跑PyTorch相关的东西,直接用Python自带的venv就够了;如果你同时还要管理TensorFlow、多个项目、不同CUDA环境,用conda会更省心。
venv命令:
python -m venv torch_env这会在当前目录生成一个torch_env文件夹,里面是独立的Python和pip。Windows下激活:
torch_env\Scripts\activate激活后命令行前面会出现(torch_env)提示符,表示后面装的包都进这个独立环境,不会污染全局Python。
我倾向于venv的原因很简单:轻、好清理、不依赖Anaconda那一大套。conda在Windows下创建环境的命令是conda create -n torch_env python=3.11,原理不同但最终效果都是为了隔离。文章后面按venv来写,用conda的读者把激活步骤换成conda activate torch_env即可。
2. 为什么国内镜像能解决99%的安装失败
看到这里你可能会问:我也没用镜像,之前装其他Python包不也挺快吗?因为torch不是普通包,它是典型的"大而全"wheel,网络传输的问题会在它身上被放大到极致。
2.1 默认源慢在哪:大wheel下载超时是常态
pip默认包源是pypi.org,官方源本身没有任何问题,但国内直连的延迟和带宽不稳定。torch这种大型wheel动辄几百MB,经常下载到一半就timeout,或者进度条走了半天还停在3%。一旦中断,pip会清掉已下载的临时文件,下次重新下,等于反复做无用功。
所以你就明白了:绝大多数"安装失败"根本不是版本冲突、也不是依赖问题,就是网络传输层没撑住。这个问题换任何软件源都解决不了,只有把流量切到国内节点才有效。
2.2 镜像源怎么选:一个简单的对比
国内常用PyPI镜像站其实不少,我长期在用的是这几个:
| 镜像站 | PyPI地址 | 特点 |
|---|---|---|
| TUNA | https://pypi.tuna.tsinghua.edu.cn/simple | 老牌开源镜像,覆盖面广,同步快 |
| 阿里云 | https://mirrors.aliyun.com/pypi/simple/ | 带宽好,下载峰值高 |
| 中科大 | https://pypi.mirrors.ustc.edu.cn/simple/ | 稳定,教育网体验好 |
具体选哪个?差别不大,下载速度主要看本地网络到哪个机房更近。我默认用TUNA,偶尔TUNA抽风就切阿里云。下面所有命令以TUNA为例,换成其他任意一个都能用。
镜像源只是PyPI的只读副本,包的版本和文件与官方源一致,安全性不用担心。
2.3 配置镜像的两个姿势:临时指定与永久写入
一次性指定,只对当前命令生效,适合偶尔用一次:
pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple永久配置,把所有pip安装都默认走镜像:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simpleWindows下这条命令会写入%APPDATA%\pip\pip.ini。写完之后再执行pip install就不用每次都加-i参数了。
我的建议是直接永久配置。因为后面你会频繁用pip装各种小包,全都走镜像,体验提升不是一点半点。
提示:如果你用旧版pip且遇到SSL证书报错,可以在命令里加上
--trusted-host pypi.tuna.tsinghua.edu.cn,新版本一般不需要。
3. 安装实操:CPU版与GPU版两条路线
前面确认完前提,配置好镜像,接下来才是真正动手装PyTorch的环节。很多人卡在这一步,所以我把它拆成两条清晰的路线。
3.1 CPU版:一条命令直接装好
激活venv之后,执行:
pip install torch torchvision torchaudio如果你已经把默认源配成国内镜像,这一步基本几分钟就能完成。torchvision是图像处理常用的配套库,torchaudio是音频相关的,它们跟torch版本是绑定的,最好一起装,避免后期版本对不上。
装完验证:
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"CPU版这里必然输出False。看到False不要慌,这是正常的——你的机器本来就没有可用的NVIDIA GPU环境。
3.2 GPU版:镜像里装的torch默认支持CUDA
很多人以为GPU版必须去官网下载一大堆东西,其实在Windows上,PyPI官方源里发布的torch 2.x wheel本身就带CUDA运行库,只是没有+cu后缀。国内镜像站的PyPI仓库是官方源的副本,所以你通过国内镜像执行pip install torch torchvision torchaudio,装出来的同样是支持CUDA的版本,不需要单独去装CUDA Toolkit。
前提是:你的NVIDIA显卡驱动足够新。驱动支持的CUDA版本只要不低于torch内置的CUDA runtime所需版本,就能正常调用GPU。用2019年之后的驱动配合PyTorch 2.x基本没有压力。
所以GPU版的安装命令跟CPU版一模一样:
pip install torch torchvision torchaudio区别在验证结果。装上之后看:
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"如果显卡驱动正常,这里应该输出True,并且torch.__version__显示的版本号不带+cpu后缀。
什么情况下才需要额外指定CUDA版本?你的显卡比较老,驱动最高只支持CUDA 11.x,而PyTorch最新版内置的是CUDA 12.x运行时,这时才需要装旧版本。这种情况常见于老款游戏本,相对少。
3.3 少数情况要精确指定CUDA版本:官方wheel索引加本地安装
当老显卡场景真的出现时,安装方式就要切换到"指定CUDA版本"了。官方按CUDA版本发布了不同的wheel索引,比如:
# CUDA 11.8 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # CUDA 12.1 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121问题又来了:这个索引在海外,下载同样慢。我的做法分两步。
第一步,先用浏览器打开对应索引的目录页面,找到torch、torchvision、torchaudio对应版本的.whl文件链接,比如:
https://download.pytorch.org/whl/cu121/torch-2.2.2+cu121-cp311-cp311-win_amd64.whl第二步,用普通下载工具把文件拉下来,这个直链比pip更耐断点,再本地安装:
pip install C:\Downloads\torch-2.2.2+cu121-cp311-cp311-win_amd64.whl文件名里的cp311表示Python 3.11,cp310表示Python 3.10,下载时按自己的Python版本选。部分国内开源镜像(比如TUNA的pytorch-wheels目录)也会同步这些wheel文件,下载速度比官方域名快很多。如果你用Python 3.11且需要的版本恰好被同步了,直接把这个目录当成下载加速器,体验十分顺滑。
3.4 安装完以后一定要验证这一句
不管走哪条路线,我建议把验证命令写成一个固定动作:
python -c "import torch; print('PyTorch', torch.__version__); print('CUDA available:', torch.cuda.is_available()); print('GPU:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'N/A')"为什么强调验证?因为很多"我装好了但用不了"的求助帖,问题都出在没做这一步基础验证。之后的每一步排查,都要基于这个输出的结果来定位。
4. PyCharm环境配置:让项目跑起来才算结束
PyTorch装好了,但如果PyCharm里选的解释器不是刚才那个venv,照样import torch报错。这一章就是把最后一公里走完。
4.1 新建项目时选对解释器:指向虚拟环境的python.exe
打开PyCharm,New Project,在Interpreter区域选择Previously configured interpreter,然后点Add Interpreter → Existing,浏览到刚才的虚拟环境目录。Windows下路径是:
你的项目目录\torch_env\Scripts\python.exe如果你是用PyCharm打开已有项目,同样在File → Settings → Project → Python Interpreter里把解释器改过来。
选对之后,Settings里显示的包列表应该能看到torch、torchvision、torchaudio这几项,说明它们已经在这个解释器里被识别到了。这一步经常被忽略,但它是"装好了却跑不起来"的常见原因。
4.2 PyCharm的包管理器也配上国内镜像
PyCharm自带的包管理器(那个加号按钮)默认还是走pypi.org,点安装照样慢。建议同步配置镜像:
File → Settings → Project → Python Interpreter → 点窗口下方的Manage Repositories,把默认地址删掉或置顶添加国内镜像:
https://pypi.tuna.tsinghua.edu.cn/simple这样以后在PyCharm界面里搜索、安装、更新包都会走镜像。虽然torch已经装好,但后面做数据处理要装pandas、numpy、matplotlib时,这个配置能省下不少等待时间。
有个细节:有时候你打开Settings,包列表里没有torch,但命令行里import torch正常。这种情况十有八九是解释器没切过来,按4.1重新指向就好。
4.3 运行第一个PyTorch程序
环境配好后,在项目里新建一个test_torch.py:
import torch # 基本张量运算 x = torch.rand(3, 3) print("x =", x) # 如果可用GPU,把张量搬到GPU上算 if torch.cuda.is_available(): device = torch.device("cuda") x_gpu = x.to(device) y_gpu = x_gpu * 2 print("GPU result:", y_gpu) else: print("CUDA not available, running on CPU")直接右键Run运行。如果右上角Run配置里显示的解释器是对的,应该会顺利输出内容。
一个小细节:PyCharm里自带的Terminal和Python Console在启动时会自动使用当前项目解释器,不用手动敲激活命令,前提是解释器设置正确。
如果想把项目放在环境目录外的某个工作目录,也可以先打开项目文件夹,再把解释器指到环境里的python.exe。尽量保证项目路径是纯英文,Windows下带中文路径偶尔会出幺蛾子。
5. 我踩过的最常见的坑与排查思路
装了无数遍PyTorch之后,我把最高频的问题总结成三类,每类都给出完整排查链路,而不是直接甩答案。
5.1 import torch直接报错:解释器选错了
问"为什么明明装了torch却提示No module named 'torch'"的,几乎都可以归结为一件事:当前使用的Python解释器不是安装torch的那个。比如你在全局Python里pip install了torch,PyCharm却用着另一个venv解释器,两边完全不是一个空间。
排查思路:
- 在PyCharm Terminal里输入
python,看路径指向哪里 - Windows上输入
where python,对比路径 - 打开Settings → Project → Python Interpreter,确认路径和上面一致
只要把PyCharm的解释器切换到装过torch的那个环境,问题立刻消失。这也解释了为什么我一直强调venv:环境隔离让这类问题可追查,全局环境下折腾起来更乱。
5.2 torch.cuda.is_available()返回False:先分三种情况
这是另一个高频焦虑点。分三种情况看。
第一种,torch.__version__里带+cpu,说明装成CPU版了。卸载重装:
pip uninstall torch torchvision torchaudio pip install torch torchvision torchaudio如果默认源已经是指定cu118/cu121的索引,这一步就等价于换索引重装。
第二种,版本号正常但is_available()仍然False。大概率是显卡驱动太旧。跑一下nvidia-smi,看右上角CUDA Version是否达到PyTorch内置CUDA runtime的要求。解决方式是更新显卡驱动,不是装CUDA Toolkit。
这里要额外提一个Windows专属症状:驱动太旧时,import torch直接报OSError: [WinError 127] 找不到指定的程序或者DLL load failed,这时候别去怀疑Python安装坏了,先把驱动更到最新再说。
第三种,设备管理器里能看到NVIDIA显卡,但被禁用了,或者在BIOS层面被屏蔽,这种多见于双显卡笔记本。右键"此电脑"→ 管理 → 设备管理器 → 显示适配器,检查是否有感叹号或禁用标记。
我不建议新手手动去官网装CUDA Toolkit,因为PyTorch的wheel自带CUDA runtime,装了ToolKit反而可能引入版本冲突。驱动保持最新就足够。
5.3 Windows特有的路径与权限问题
还有几个Windows特有的坑。
一是路径。venv和项目放在路径含空格或者中文的目录下,某些依赖在构建时会出现很诡异的错误。建议从开始就用纯英文路径,比如D:\Projects\torch_demo、D:\envs\torch_env。
二是权限。pip装包提示PermissionError时,不要下意识去右键"以管理员身份运行",那是治标不治本。正确做法是确保在venv中操作,包的安装位置在用户目录或项目目录内,不需要管理员权限。PyCharm也不要总用管理员模式跑,普通权限反而省心。
三是磁盘空间。torch的GPU版加依赖轻松占2GB以上,C盘紧张时建议把venv和项目放到其他盘。别问我是怎么知道这个坑的,我曾在装到一半时收到"磁盘空间不足",然后从装包开始重来了一遍。
四是杀毒软件或系统防护偶尔会拦截刚下载的wheel临时文件,导致pip报No such file or directory。如果定时复现,可以把pip缓存目录或项目目录加入白名单,或者换一个镜像源试试。
最后分享一个我自己的固定流程。在新电脑上装PyTorch环境,我永远按这个顺序走:先nvidia-smi看一眼驱动版本,再创建venv,然后配国内镜像,接着一次性装torch全家桶,最后打开PyCharm把解释器指对、跑一次test_torch.py。只要第一步的显卡信息没错,后面基本十五分钟收工,几乎不会翻车。如果你在某个环节卡住了,建议停下来重新捋一遍顺序——大多数问题都出在"前提条件没确认就往下冲",而不是安装命令本身写错。这篇记录不涉及什么高深技巧,但它是我踩了无数坑后整理出的最稳路线,希望也能帮你省下那几个小时的折腾时间。