资讯动态

深度学习环境搭建:为什么我劝你别在 base 里装 PyTorch

发布时间:2026/10/24 13:48:13 来源:尧图企业网站定制
简介这份资源面向深度学习初学者与需要配置GPU训练环境的开发者聚焦于在Anaconda中新建独立虚拟环境来安装PyTorch避免直接在base环境安装框架导致的库冲突与版本混乱。内容围绕conda创建与激活环境、查看显卡驱动版本、选择匹配的CUDA与cuDNN版本、在PyTorch官网检索历史版本并复制安装命令等关键环节展开同时给出国内镜像源加速方案并演示通过import torch与torch.cuda.is_available()验证安装是否成功。资源包共1个docx文档约170KB以图文笔记形式记录环境搭建的完整流程与版本对应关系便于按步骤对照操作。目前已有1609人学习下载适合希望快速跑通PyTorch GPU环境、减少踩坑时间的中初级读者参考。1. 深度学习环境搭建为什么我劝你别在 base 里装 PyTorch刚入行那会儿我图省事拿到新机器第一件事就是pip install torch装完跑个 demo 没问题心里还美滋滋。结果三个月后要复现另一个项目人家要求 PyTorch 1.7 CUDA 11.0我这边 base 环境里已经堆了七八个版本的 numpy、两个版本的 torchimport torch直接报undefined symbol折腾一整天没救回来最后只能重装系统。那次血泪经验让我彻底明白一件事深度学习框架搭建最好在 anaconda 中新建一个虚拟环境不建议直接在 base 环境中安装深度学习框架。base 环境是 conda 自己的地盘你往里塞东西等于把工具箱和厨房混在一起早晚出事。这篇笔记拆的是一个很典型的 PyTorch 虚拟环境搭建流程核心就三件事用 conda 建独立环境、按显卡驱动选对 CUDA 和 PyTorch 版本、装完立刻验证 GPU 能不能用。适合刚配机器的新手照着走也适合被版本冲突折磨过的老手回头检查自己的流程。整套流程不依赖任何特定平台Windows 和 Linux 思路一致命令略有差别我会标出来。下面从环境隔离的原理讲起一路落到版本匹配、安装命令和验证脚本中间穿插几个我踩过的坑。2. conda 虚拟环境隔离原理与建环境实操2.1 为什么虚拟环境能防冲突Python 的包管理有个绕不开的问题所有包默认装在同一个 site-packages 目录下不同项目依赖同一个库的不同版本时后装的会覆盖先装的。conda 的解法是给每个环境建一套独立的目录树包含自己的 Python 解释器、自己的 site-packages、自己的二进制依赖。激活某个环境时conda 把该环境的路径插到 PATH 最前面系统调用的python、pip都指向这个环境内部跟其他环境完全隔离。这个隔离不只是 Python 层面。conda 还能管理非 Python 的二进制依赖比如 CUDA runtime、cuDNN、MKL 数学库。这一点比纯venv强因为 PyTorch 依赖的 CUDA 库版本很挑用 conda 装能自动把匹配的 cudatoolkit 一起拉下来省得你手动配LD_LIBRARY_PATH。常见做法是环境名带项目特征比如pytorch17、tf15别用test、env1这种过两个月你自己都记不住哪个是哪个。2.2 新建与激活环境的具体命令先确认 conda 可用然后建环境。指定 Python 版本很关键PyTorch 1.7 官方支持到 Python 3.8你装个 3.11 进去大概率找不到对应的 wheel。# 查看当前 conda 版本和已有环境 conda --version conda env list # 新建环境名字叫 pytorchPython 版本锁 3.8 # -n 后面跟环境名python 后面跟版本号 conda create -n pytorch python3.8 # 中途会提示确认输入 y 回车 # 建完后激活环境 conda activate pytorch # 激活后命令行前缀会从 (base) 变成 (pytorch) # 确认当前 Python 路径指向环境内部 which python # Linux/macOS where python # Windows激活这一步有个细节如果你用的是 Windows 且 conda 版本较老conda activate可能报CommandNotFoundError需要先跑一次conda init再重开终端。我一般建完环境第一件事是python --version确认版本对再看which python的路径里有没有环境名两个都对才继续。环境建好后不用急着装框架先把 pip 源配好后面下载能快不少。# 临时指定国内源安装单次生效 pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple # 或者永久配置写入 pip 配置文件 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple提示国内源里清华、中科大、阿里云的同步频率都比较高豆瓣源偶尔会有包滞后。如果某个包在清华源找不到换阿里云再试一次别死磕一个源。3. CUDA 与 PyTorch 版本匹配先看驱动再定版本3.1 显卡驱动版本决定 CUDA 上限很多人装环境翻车根子在于顺序搞反了先挑 PyTorch 版本装完发现 CUDA 跑不起来回头查驱动发现驱动太老。正确顺序是反过来的——先看显卡驱动支持到哪个 CUDA 版本再在这个范围内选 PyTorch。查看驱动版本最直接的方式是打开 NVIDIA 控制面板点「帮助」→「系统信息」在「组件」标签里能看到NVIDIA CUDA 11.2.xxx这样的字样这个数字就是驱动支持的最高 CUDA 版本。命令行方式也行# 查看显卡驱动和 CUDA 版本 nvidia-smi # 输出右上角 CUDA Version: 11.2 表示驱动支持到 11.2 # 注意这是驱动支持的上限不是你已安装的 CUDA 版本这里有个容易混淆的点nvidia-smi显示的 CUDA Version 是驱动能兼容的最高运行时版本不是你必须装这个版本。比如显示 11.2你可以装 11.0、11.1、11.2 的 CUDA但不能装 11.3。项目正文里提到「11.2 11可以装 11 的 CUDA」说的就是这个逻辑。选 CUDA 11.0 而不是 11.2是因为 PyTorch 1.7.0 官方预编译包只提供到 cu110装 11.2 反而要自己编译得不偿失。3.2 PyTorch、torchvision、CUDA 三者对应关系PyTorch 官方每个版本都有固定的 CUDA 搭配torchvision 又跟 PyTorch 版本绑定。装错一个轻则import报错重则 GPU 用不了。下面这张表是我整理的项目里用到的版本组合照着选不会错组件版本说明PyTorch1.7.0主框架torchvision0.8.1与 PyTorch 1.7.0 配套CUDA11.0驱动 11.2 向下兼容cuDNN8.0与 CUDA 11.0 配套Python3.8PyTorch 1.7 支持范围内选 PyTorch 1.7.0 有两个考虑一是 CUDA 11.0 要求显卡驱动版本足够新老驱动装不上二是 1.7 在当时属于较新的稳定版API 和后续版本差异不大学到的写法不容易过时。如果你驱动只支持到 CUDA 10.2那就得退到 PyTorch 1.6 或更早别硬上。3.3 安装命令与国内源加速PyTorch 官网的 previous-versions 页面列出了所有历史版本的安装命令直接复制对应 CUDA 版本的命令即可。以 CUDA 11.0 为例# 在激活的 pytorch 环境里执行 # 这是 PyTorch 1.7.0 CUDA 11.0 的官方安装命令 pip install torch1.7.0cu110 torchvision0.8.1cu110 torchaudio0.7.0 \ -f https://download.pytorch.org/whl/torch_stable.html # 如果下载太慢把 -f 后面的地址换成国内镜像 # 注意PyTorch 的 wheel 包国内源同步不全优先用官方地址 # 实在慢可以挂代理下载 whl 文件再本地安装命令里的cu110后缀表示这个 wheel 是编译时链接 CUDA 11.0 的不带后缀的是 CPU 版本。-f参数指定额外的包索引地址PyTorch 把历史版本的 wheel 都放在torch_stable.html这个页面下。装的时候 pip 会先解析依赖把 numpy、typing-extensions 这些一起装上。如果中途报Could not find a version八成是 Python 版本或平台不匹配回去检查python --version和系统架构。注意不要混用 conda 和 pip 装同一个包。比如先用conda install pytorch再用pip install torch两个包管理器各装各的路径冲突后import torch会加载到错误的版本。我一般统一用 pip 装 PyTorchconda 只用来建环境和管理 Python 本身。4. 装完必做的验证三行代码确认 GPU 可用4.1 验证脚本与输出解读装完不验证等于没装。下面这段代码是我每次配完环境必跑的三行就能判断环境是否健康# 在 pytorch 环境里启动 python 后逐行执行 import torch # 1. 查看 PyTorch 版本确认装的是预期版本 print(torch.__version__) # 预期输出1.7.0cu110 # 2. 查看 CUDA 是否可用这是最关键的一行 print(torch.cuda.is_available()) # 预期输出True # 3. 查看 CUDA 版本和显卡型号 print(torch.version.cuda) print(torch.cuda.get_device_name(0)) # 预期输出11.0 和你的显卡型号torch.cuda.is_available()返回False是最常见的翻车现场。原因通常有三类装成了 CPU 版本的 torch版本号里没有cu、CUDA 版本和驱动不匹配、或者环境里混装了多个 torch。排查顺序是先用pip list | grep torch看装了哪些 torch 相关包确认版本号带cu110再看nvidia-smi驱动是否正常最后检查有没有在 base 环境里误装过 torch 导致路径污染。4.2 一个真实的版本冲突排查过程有次帮同事看环境他的torch.cuda.is_available()一直返回False但nvidia-smi显示驱动正常。我先让他跑pip show torch发现装的是1.7.0不带 cu 后缀说明 pip 从默认源拉了个 CPU 版本。原因是他装的时候没加-f参数pip 在 PyPI 主站找到了同名的 CPU wheel。解决办法是先pip uninstall torch torchvision卸干净再用带-f的完整命令重装。这件事之后我养成习惯装完立刻跑验证脚本is_available()不是True就不往下走。另一个坑是 conda 和 pip 混装导致的。有人先用conda install pytorch cudatoolkit11.0装了一遍又用 pip 装了一遍结果import torch加载的是 conda 装的那个但 conda 版本链接的 CUDA 路径和系统里的不一致报libcudart.so.11.0: cannot open shared object file。这种错误的解法是彻底卸载两个版本只保留一种安装方式。我一般推荐 pip 装 PyTorch因为官方 wheel 更新更及时conda 的 PyTorch 包有时会滞后几个小版本。5. 避坑与常见问题五条踩出来的经验5.1 环境建好了但 pip 装到了 base现象明明conda activate pytorch了装完包在 base 环境里也能 import。原因pip 的路径没跟着 conda 环境走或者装的时候忘了激活环境。解决装包前先which pip确认路径里有环境名没有的话用python -m pip install代替直接pip install强制走当前 Python 解释器的 pip。5.2 CUDA 版本选高了装不上现象驱动显示支持 CUDA 11.2装了 PyTorch 的 cu112 版本is_available()返回 False。原因PyTorch 1.7.0 官方只提供到 cu110 的预编译包cu112 需要自己编译或等新版本。解决降级到 cu110或者升级 PyTorch 到有 cu112 支持的版本。选版本时以 PyTorch 官方提供的为准不是驱动支持多高就装多高。5.3 国内源同步不全导致找不到包现象用清华源装torch1.7.0cu110报No matching distribution found。原因PyTorch 的 CUDA 版本 wheel 体积大国内源同步不全很多只同步了 CPU 版本。解决PyTorch 本体用官方地址加-f参数装其他依赖包再用国内源加速。或者手动下载 whl 文件到本地pip install 本地路径/xxx.whl。5.4 Python 版本不匹配导致 wheel 找不到现象环境里 Python 是 3.9装 PyTorch 1.7.0 报找不到对应 wheel。原因PyTorch 1.7.0 的预编译 wheel 只覆盖 Python 3.6 到 3.83.9 没有。解决重建环境时锁python3.8。建环境时多花十秒指定版本比装到一半发现不匹配再重建省事得多。5.5 显卡驱动太老不支持所选 CUDA现象nvidia-smi报错或显示的 CUDA Version 低于你要装的版本。原因显卡驱动版本过旧不支持新 CUDA runtime。解决去显卡官网下载对应型号的最新驱动升级。升级驱动前记下当前版本号万一新驱动有问题还能回退。升级后重启再跑nvidia-smi确认 CUDA Version 达到要求。6. 进阶技巧用 environment.yml 固化环境配好一个环境只是开始真正省事的是把环境配置固化下来换机器或重装系统时一条命令还原。conda 支持导出环境到 yml 文件# 导出当前环境的所有依赖到文件 conda env export -n pytorch environment.yml # 换机器后从文件重建环境 conda env create -f environment.yml但conda env export会把所有依赖的精确版本都写进去包括系统相关的 build string跨平台还原时经常失败。我一般用--from-history参数只导出显式安装的包# 只导出手动安装的包跨平台兼容性更好 conda env export -n pytorch --from-history environment.yml导出的文件里会记录python3.8、pip这些顶层依赖pip 装的包需要单独处理。我的习惯是在项目根目录放一个requirements.txt记录 pip 包配合 yml 文件一起用。重建时先conda env create -f environment.yml再pip install -r requirements.txt。另一个技巧是给环境加个验证脚本每次重建后跑一遍。我把前面那三行验证代码存成check_env.py内容就是打印版本、检查 CUDA、列出显卡型号。重建环境后第一件事就是python check_env.py输出全对才继续装项目依赖。这个习惯帮我省过好几次「装完以为好了跑训练才发现 GPU 没用上」的尴尬。从那以后我每次配新环境都强制走一遍「建环境 → 锁 Python 版本 → 查驱动 → 选 CUDA → 装 PyTorch → 跑验证脚本」的流程一步不跳。看起来多花十分钟但比装到一半翻车再回头排查省心得多。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑