简介:这份资源面向深度学习初学者与需要规范配置 PyTorch 开发环境的开发者,核心解决在 Anaconda 中新建独立虚拟环境、避免在 base 环境直接安装框架导致依赖冲突的问题。资源包共 1 个 docx 文件,约 170KB,以图文笔记形式整理环境搭建的关键流程,涵盖 conda 新建与激活环境命令、PyTorch 1.7.0 与 CUDA 11.0、CUDNN 8.0、Torchvision 0.8.1 的版本匹配思路,以及查看显卡驱动版本、判断可安装 CUDA 版本的方法。文中还给出 PyTorch 官网历史版本查找方式、国内镜像源替换建议,并通过 import torch、torch.cuda.is_available() 等命令验证安装结果,帮助读者建立可复用的环境检查与排错习惯。目前已有 1606 人学习,适合希望少走弯路、快速完成深度学习框架环境搭建的读者参考。
1. 为什么我劝你别在 base 环境里装 PyTorch
刚配好的机器,兴冲冲pip install torch,跑通一个 demo,觉得自己行了。三个月后要复现另一篇论文,要求 PyTorch 1.7 + CUDA 11.0,而 base 里躺着的是 2.x,降级把别的库带崩,升级又把旧代码跑挂。这种翻车我见过太多次,根子就一个:所有东西都塞在 base 环境里。
深度学习环境搭建的核心不是"装上",而是"隔离"。Anaconda 的虚拟环境让每个项目拥有独立的 Python 解释器和库目录,A 项目用 PyTorch 1.7,B 项目用 2.x,互不干扰。这篇笔记拆的是一套完整的落地流程:从 conda 建环境、查显卡驱动、装 CUDA/cuDNN,到在虚拟环境里装 PyTorch 并用 PyCharm 挂载,最后验证 GPU 是否真的可用。适合刚拿到带 N 卡的机器、准备跑第一个训练脚本的人,也适合被环境冲突折磨过、想重新理一遍的老手。
2. 用 conda 建一个干净环境:命令、参数与目录结构
2.1 为什么是 conda 而不是 venv
Python 自带的 venv 只能隔离 pip 包,管不了 Python 版本本身,更管不了 CUDA 工具链这种系统级依赖。conda 是跨语言的包管理器,能同时锁 Python 版本、装二进制库、管理环境目录,对深度学习这种"Python + 编译好的 CUDA 扩展"的组合更合适。常见做法是:机器上装一个 Anaconda 或 Miniconda,之后所有项目都从它派生独立环境,base 只留 conda 自己。
选 Miniconda 还是完整版 Anaconda?如果只是配深度学习环境,Miniconda 体积小、干净,装完自己按需conda install;完整版预装了几百个科学计算包,省事但臃肿。我一般给新机器装 Miniconda,环境自己控。
2.2 新建与激活环境的具体命令
# 新建一个名为 pytorch 的环境,指定 Python 版本 # -n 后面跟环境名,python= 后面跟版本号 conda create -n pytorch python=3.8 # 中途会提示确认,输入 y 回车 # 建完后查看所有环境,带 * 的是当前激活的 conda env list # 激活环境(Windows 和 Linux/macOS 命令不同) conda activate pytorch # Windows / 新版 conda 通用 # source activate pytorch # 老版本 Linux/macOS 可能需要这句 # 退出环境 conda deactivate参数说明:-n pytorch里的pytorch是环境名,随便起,但建议和项目对应,别用test1、env2这种,过俩月自己都忘了是干嘛的。python=3.8是硬约束,PyTorch 1.7 官方支持到 3.8,装 3.9 以上可能找不到对应 wheel。环境建好后,所有 pip 和 conda 安装都只影响这个环境,base 纹丝不动。
提示:激活环境后命令行提示符前面会出现
(pytorch),这是判断当前在哪个环境最直接的方式。装包前先看一眼,能省掉一半"装错地方"的坑。
2.3 环境目录长什么样,出问题去哪看
conda 环境默认放在 Anaconda 安装目录的envs/下,比如~/miniconda3/envs/pytorch/。里面bin/(Windows 是Scripts/)放可执行文件,lib/site-packages/放第三方库。如果哪天环境彻底装乱了,直接conda remove -n pytorch --all删掉重建,比在里面修修补补快得多。这也是虚拟环境最大的价值:它是可抛弃的,坏了不心疼。
3. 显卡驱动、CUDA 与 cuDNN:版本怎么对,顺序怎么走
3.1 先查驱动,再定 CUDA 上限
装 CUDA 之前必须先看显卡驱动版本,因为驱动决定了你能装的 CUDA 上限。打开 NVIDIA 控制面板,点"系统信息",或者命令行直接查:
nvidia-smi输出右上角会显示CUDA Version: 11.2之类的字样。这个数字不是"你已装的 CUDA 版本",而是"当前驱动最高支持的 CUDA 版本"。原文里 11.2 > 11,所以装 CUDA 11.0 没问题。反过来,如果驱动只支持到 10.2,你硬装 11.0 的 CUDA,PyTorch 会报CUDA driver version is insufficient,这是最典型的版本不匹配翻车。
版本对应关系记一条经验:CUDA 11.0 要求驱动版本大约 450.36 以上,CUDA 11.2 要求 460 以上。不确定就去 NVIDIA 官方文档查对应表,别凭感觉。
3.2 CUDA 和 cuDNN 的安装顺序
顺序是:先装 CUDA Toolkit,再把 cuDNN 的文件覆盖进去。CUDA 从 NVIDIA 官网下载对应版本的 runfile 或 exe,安装时选自定义,可以取消勾选驱动(驱动已经装好了就别动它)。装完验证:
nvcc -V能打印出版本号就说明 CUDA 装上了。cuDNN 是一个压缩包,解压后把bin/、include/、lib/里的文件分别拷到 CUDA 安装目录对应的文件夹里。这一步没有安装程序,纯手动覆盖,容易漏文件。拷完可以检查cuda/lib/x64/下有没有cudnn64_8.dll(Windows)或libcudnn.so(Linux)。
注意:CUDA 和 cuDNN 的版本必须配套。cuDNN 8.0 对应 CUDA 11.0,cuDNN 8.1 对应 CUDA 11.2,装错组合会在训练时报
CUDNN_STATUS_NOT_INITIALIZED,排查起来很费时间。
3.3 版本组合表:我用的这套
| 组件 | 版本 | 选择理由 |
|---|---|---|
| 显卡驱动 | 支持 CUDA 11.2 | 驱动上限高于目标 CUDA,留余量 |
| CUDA | 11.0 | 驱动 11.2 > 11.0,满足要求 |
| cuDNN | 8.0 | 与 CUDA 11.0 配套 |
| PyTorch | 1.7.0 | 支持 CUDA 11.0,且相对较新 |
| Torchvision | 0.8.1 | 与 PyTorch 1.7.0 严格配套 |
| Python | 3.8 | PyTorch 1.7 官方支持版本 |
这张表是原文里那套组合的整理。核心逻辑两条:一是 CUDA 版本不能超过驱动上限,二是 PyTorch、Torchvision、Python 三者版本要互相兼容。Torchvision 和 PyTorch 是强绑定关系,0.8.1 配 1.7.0,装错一个另一个大概率 import 失败。
4. 在虚拟环境里装 PyTorch:命令、换源与验证
4.1 从官网拿安装命令,别自己拼
PyTorch 官网的 previous-versions 页面按版本列出了对应的安装命令,找到 1.7.0 + CUDA 11.0 那一行,直接复制。自己拼pip install torch==1.7.0很容易漏掉torchvision和 CUDA 后缀,装出来是 CPU 版。典型命令长这样:
# 在已激活的 pytorch 环境里执行 # 注意 torch、torchvision 版本要和 CUDA 版本对应 pip install torch==1.7.0+cu110 torchvision==0.8.1+cu110 torchaudio==0.7.0 -f https://download.pytorch.org/whl/torch_stable.html+cu110是 CUDA 11.0 的编译标记,没有这个后缀就是 CPU 版。-f指定 wheel 下载源,官网这个地址在国内访问可能很慢。
4.2 换国内源加速
下载慢就把源换成国内的。原文列了几个镜像,我常用清华和阿里云:
# 临时指定源安装(推荐,不影响全局配置) pip install torch==1.7.0+cu110 torchvision==0.8.1+cu110 -i https://pypi.tuna.tsinghua.edu.cn/simple # 或者永久配置默认源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple常用镜像地址:
| 镜像 | 地址 |
|---|---|
| 清华 | https://pypi.tuna.tsinghua.edu.cn/simple |
| 阿里云 | https://mirrors.aliyun.com/pypi/simple/ |
| 中科大 | https://pypi.mirrors.ustc.edu.cn/simple/ |
| 豆瓣 | https://pypi.douban.com/simple |
提示:换源只加速下载,不改变包内容。但要注意有些镜像同步有延迟,如果某个版本在镜像上找不到,换回官方源再试一次。
4.3 装完必须验证的三行代码
装完不验证等于没装。激活环境后依次执行:
conda activate pytorch # 激活环境 python # 进入 Python 交互import torch # 导入 PyTorch print(torch.__version__) # 输出 torch 版本,应为 1.7.0 print(torch.cuda.is_available()) # 输出 True 表示 GPU 可用 print(torch.cuda.get_device_name(0)) # 输出显卡型号,确认认到了卡torch.cuda.is_available()返回False是最常见的翻车点,原因通常有三类:装成了 CPU 版(命令里漏了+cu110)、CUDA 和驱动版本不匹配、或者环境变量没配好。先看torch.__version__里有没有+cu后缀,没有就是装错包了,重装。
4.4 让 PyCharm 用上这个环境
PyCharm 里新建项目时,解释器选"已存在的 conda 环境",路径指向envs/pytorch/python.exe(Windows)或envs/pytorch/bin/python(Linux/macOS)。选好后 PyCharm 底部的终端会自动激活该环境,跑脚本时用的就是这套库。如果之前项目用的是 base 解释器,记得在 Settings → Project → Python Interpreter 里改过来,否则会出现"命令行能跑、PyCharm 报 ModuleNotFoundError"的玄学问题。
5. 避坑排查:五个我踩过的真实问题
5.1 现象:torch.cuda.is_available()返回 False
原因:最常见是装成了 CPU 版,命令里没有+cu110后缀;其次是 CUDA 版本超过驱动上限。解决:先print(torch.__version__)看有没有+cu标记,没有就卸载重装带 CUDA 后缀的版本;有标记但仍 False,用nvidia-smi确认驱动支持的 CUDA 上限,必要时降 CUDA 版本。
5.2 现象:conda 装包卡在 Solving environment
原因:conda 的依赖求解器在包多的时候会非常慢,这是它的老毛病。解决:能用 pip 装的就用 pip,尤其在虚拟环境里,pip 和 conda 混用虽然不推荐,但装 PyTorch 这类 wheel 包时 pip 更快。或者换mamba替代 conda,求解速度提升明显。
5.3 现象:PyCharm 里 import torch 报 ModuleNotFoundError
原因:PyCharm 项目解释器还指向 base 或其他环境,没切到新建的 pytorch 环境。解决:Settings → Project Interpreter 里手动指定envs/pytorch/下的 python 可执行文件,确认列表里能看到 torch。
5.4 现象:训练时报CUDNN_STATUS_NOT_INITIALIZED
原因:cuDNN 版本和 CUDA 不配套,或者 cuDNN 文件没拷全。解决:核对 cuDNN 与 CUDA 的对应关系(8.0 配 11.0),重新解压 cuDNN 并把三个目录的文件完整覆盖到 CUDA 安装目录,别只拷 dll 漏了 lib。
5.5 现象:装完 PyTorch 后其他库报版本冲突
原因:在 base 环境里装过东西,或者多个环境共用了同一个 pip 缓存导致装串。解决:确认当前激活的是目标环境(提示符有(pytorch)),用pip list看已装包,冲突严重就删环境重建。这也是为什么一开始就强调别在 base 里装。
6. 进阶技巧:用 environment.yml 一键复现整套环境
手动敲命令配环境,换台机器就得重来一遍,还容易漏。更稳的做法是把环境导出成environment.yml,别人拿到文件一条命令就能复现。导出命令:
# 导出当前环境的所有依赖 conda env export -n pytorch > environment.yml # 只导出显式安装的包(更干净,推荐) conda env export -n pytorch --from-history > environment.yml--from-history只记录你手动conda install过的包,不带一堆自动解析出来的传递依赖,跨平台兼容性更好。拿到 yml 的人执行:
conda env create -f environment.yml就能得到同名环境。但要注意,pip 装的包(比如带+cu110的 PyTorch)不会完整写进 conda 的 yml,常见做法是在 yml 里加一段pip:节点手动补上:
name: pytorch channels: - defaults dependencies: - python=3.8 - pip - pip: - torch==1.7.0+cu110 - torchvision==0.8.1+cu110这样别人conda env create时会自动走 pip 装 PyTorch。我现在的习惯是:每配好一个新环境,第一件事就是导出 yml 存进项目仓库,换机器、重装系统、交接给同事,都靠它。从那以后我每次配完环境都强制走一遍导出和重建验证,确认 yml 真能跑起来才敢删本地环境。希望帮到你。
本文还有配套的精品资源,点击获取