简介:这份资源面向深度学习初学者与需要配置 PyTorch 开发环境的学生、开发者,聚焦于在 Anaconda 中新建独立虚拟环境来搭建深度学习框架,避免直接在 base 环境中安装导致的库冲突问题。压缩包内共 1 个 docx 文档,约 170KB,以图文笔记形式整理环境配置的关键环节,便于边看边操作。内容涉及 conda 新建与激活环境命令、显卡驱动版本查看、CUDA 与 cuDNN 版本匹配思路,以及 PyTorch、Torchvision 的版本选择与安装命令,还给出国内镜像源地址用于加速下载,并演示了导入 torch、查看版本与检测 GPU 是否可用的验证方法。目前已有 1609 人学习下载,适合希望快速跑通 PyTorch 环境、减少版本踩坑的读者参考。
1. 为什么我劝你别在 base 环境里装 PyTorch
刚接触深度学习那会儿,我也图省事,直接在 Anaconda 的 base 环境里pip install torch。结果三个月后,一个做图像分割的项目需要 PyTorch 1.7 + CUDA 11.0,另一个做 NLP 的 Demo 又依赖 TensorFlow 1.5,两个框架的 numpy 版本互相打架,base 环境直接崩了,重装 Anaconda 花了我一整个下午。从那以后,我给自己定了一条死规矩:任何深度学习框架,一律新建独立虚拟环境。
这份资源要解决的,就是「PyTorch 深度学习虚拟环境搭建」这件事——从 Anaconda 建环境、装 CUDA/cuDNN、选对 PyTorch 版本,到验证 GPU 是否真的可用。它适合刚入门深度学习、准备跑第一个训练脚本的开发者,也适合手里有多套代码、被依赖冲突折磨过的老手。核心逻辑只有一句话:环境隔离是底线,版本匹配是关键,验证 GPU 是最后一道关。
2. 用 conda 建一个干净的 PyTorch 环境:命令、参数与目录结构
2.1 为什么不复用 base,也不建议用 venv
Anaconda 的 base 环境里预装了 numpy、scipy、jupyter 等一大堆包,看起来方便,实际上是隐患。深度学习框架对 numpy、protobuf、h5py 这些底层库的版本极其敏感,base 里预装的版本往往和你需要的框架版本对不上。一旦你在 base 里pip install覆盖了某个包,jupyter 可能就打不开了,conda 自身的依赖也可能被破坏。
那用 Python 自带的venv行不行?对于纯 CPU 的轻量项目可以,但深度学习场景下不推荐。原因有两个:一是venv只管 Python 包,管不了 CUDA 工具链这种非 Python 依赖;二是 conda 可以同时管理 Python 版本和二进制依赖,装 PyTorch 时能自动拉取匹配的 cudatoolkit,省去手动配环境变量的麻烦。常见做法是:深度学习用 conda 建环境,纯 Web 开发用 venv。
2.2 新建环境的完整命令与参数拆解
打开 Anaconda Prompt(Windows)或终端(Linux/macOS),执行下面这条命令:
# 新建一个名为 pytorch 的环境,指定 Python 3.8 # -n 后面跟环境名,python= 后面跟版本号 conda create -n pytorch python=3.8这里有几个参数值得说清楚:
-n pytorch:-n是--name的缩写,指定环境名称。名字建议用pytorch、torch17这种能看出用途的,别用env1、test,过两个月你自己都忘了是干嘛的。python=3.8:指定 Python 版本。PyTorch 1.7 官方支持 Python 3.6~3.8,选 3.8 是比较稳的。如果你装的是更新的 PyTorch,可以选 3.9 或 3.10,但要注意有些老代码在 3.10 上会有语法兼容问题。- 不加
python=的话,conda 会用默认版本,可能和你需要的框架不匹配,所以强烈建议显式指定。
执行过程中 conda 会列出将要安装的包,输入y确认。装完后激活环境:
# 激活刚建好的环境 conda activate pytorch # 确认当前 Python 版本和路径 python --version which python # Windows 上用 where python激活后命令行提示符前面会出现(pytorch),说明你已经进入这个独立环境了。以后在 PyCharm 里配置解释器时,就指向这个环境的 python.exe,路径一般在Anaconda安装目录/envs/pytorch/python.exe。
提示:如果你用的是 Windows 且
conda activate报错,先执行conda init然后重开终端。这是 conda 4.6 以后的一个常见初始化问题。
2.3 环境目录里到底放了什么
建完环境后,你可以到Anaconda安装目录/envs/pytorch/下面看一眼。里面会有Lib/site-packages(存放所有 pip 和 conda 装的包)、python.exe(该环境独立的解释器)、Scripts(可执行脚本)。每个环境都是这样一套完整的目录,互不干扰。这也是为什么环境隔离能解决问题——你在这个环境里升级 numpy,另一个环境里的 numpy 纹丝不动。
3. CUDA 与 cuDNN 版本怎么选:从显卡驱动倒推
3.1 先查驱动版本,再决定 CUDA 上限
很多人装 CUDA 的顺序是错的:先下载最新版 CUDA,装完发现显卡驱动不支持,又回头折腾驱动。正确的顺序是从显卡驱动倒推。
在 Windows 上,右键桌面 → NVIDIA 控制面板 → 帮助 → 系统信息 → 组件,可以看到「NVIDIA 驱动程序版本」和「CUDA 版本」两行。这里的 CUDA 版本是驱动最高支持的 CUDA 版本,不是你已经安装的版本。比如显示 CUDA 11.2,意味着你可以装 11.2 及以下的 CUDA,装 11.3 就可能出问题。
Linux 下用命令查:
# 查看显卡驱动版本和支持的最高 CUDA 版本 nvidia-smi输出右上角会显示CUDA Version: 11.2这样的字样。记住这个数字,它是你的天花板。
3.2 CUDA 11.0 + cuDNN 8.0 的匹配逻辑
原始项目里选的是 CUDA 11.0 + cuDNN 8.0 + PyTorch 1.7.0 + torchvision 0.8.1。这个组合在 2020 年底到 2021 年初是主流配置,现在虽然偏老,但很多实验室的旧代码和预训练模型还锁在这个版本上。
选 CUDA 11.0 的理由是:驱动支持 11.2,11.0 在支持范围内且比 11.2 更成熟,第三方库的兼容性更好。cuDNN 必须和 CUDA 版本对应,CUDA 11.0 对应 cuDNN 8.0.x,装错了会导致 PyTorch 找不到 cuDNN 库。
下载 CUDA 和 cuDNN 时注意:
| 组件 | 版本 | 下载来源 | 关键注意点 |
|---|---|---|---|
| CUDA Toolkit | 11.0 | NVIDIA 官网归档页 | 选 runfile 或 exe 本地安装包 |
| cuDNN | 8.0.x | NVIDIA 开发者页面 | 需要注册账号,下载后解压覆盖到 CUDA 目录 |
| PyTorch | 1.7.0 | PyTorch 官网 previous-versions | 复制对应 CUDA 11.0 的安装命令 |
| torchvision | 0.8.1 | 随 PyTorch 命令一起装 | 版本必须和 PyTorch 匹配 |
cuDNN 的安装方式是把解压后的bin、include、lib三个文件夹里的内容,分别复制到 CUDA 安装目录的对应文件夹里。这一步容易漏,漏了的话torch.cuda.is_available()会返回 False。
注意:CUDA 安装时如果提示「Visual Studio Integration」失败,可以忽略,那个组件是给 C++ 开发用的,不影响 PyTorch。
3.3 用 conda 装 cudatoolkit 的替代方案
如果你不想手动装 CUDA 和 cuDNN,conda 提供了一个更省事的方案:在环境里直接装cudatoolkit。PyTorch 官方 conda 命令里通常已经包含了这个依赖,比如:
# 用 conda 安装 PyTorch 1.7.0 + CUDA 11.0 的组合 conda install pytorch==1.7.0 torchvision==0.8.1 torchaudio==0.7.0 cudatoolkit=11.0 -c pytorch这样 conda 会自动帮你处理好 CUDA 运行时库,不需要单独装 CUDA Toolkit 和 cuDNN。缺点是 conda 的 cudatoolkit 只包含运行时,不包含 nvcc 编译器,如果你需要编译自定义 CUDA 算子,还是得装完整的 CUDA Toolkit。常见做法是:纯跑模型用 conda 装 cudatoolkit,要编译扩展就手动装完整 CUDA。
4. 安装 PyTorch 与验证 GPU:命令、镜像源与排错
4.1 从官网复制安装命令的正确姿势
PyTorch 官网的 previous-versions 页面列出了所有历史版本的安装命令。找到 1.7.0 对应的 CUDA 11.0 那一行,复制 conda 或 pip 命令。以 pip 为例:
# 安装 PyTorch 1.7.0 + torchvision 0.8.1,CUDA 11.0 版本 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这个后缀,它表示这个 wheel 包是编译了 CUDA 11.0 支持的。如果你装的是不带后缀的版本,那就是 CPU 版,torch.cuda.is_available()会返回 False。这是新手最容易踩的坑之一。
4.2 国内镜像源加速与注意事项
PyTorch 官方源在国内下载速度可能很慢,可以换国内镜像源。但要注意:镜像源同步的包可能不全,尤其是带+cu110这种后缀的 CUDA 版本。如果镜像源里找不到对应版本,还是得回官方源。
常用的镜像源:
# 临时使用清华源安装普通包 pip install tensorflow==1.5.0 -i https://pypi.tuna.tsinghua.edu.cn/simple # 永久配置清华源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple可选的镜像源还有阿里云、中科大、豆瓣等。但装 PyTorch CUDA 版时,我一般还是用官方源加-f参数指定 wheel 索引页,因为镜像源对 CUDA 版本的支持不稳定。
4.3 验证脚本:三行代码确认环境是否可用
装完后必须验证。在激活的 pytorch 环境里执行:
# 启动 Python 解释器后逐行输入 import torch # 导入 PyTorch print(torch.__version__) # 输出 PyTorch 版本,应为 1.7.0+cu110 print(torch.cuda.is_available()) # 输出 True 表示 GPU 可用 print(torch.cuda.get_device_name(0)) # 输出显卡型号如果torch.cuda.is_available()返回 False,按以下顺序排查:
- 确认装的是 CUDA 版而不是 CPU 版(看版本号有没有
+cu110)。 - 确认 CUDA 和 cuDNN 装好了,且 cuDNN 的文件复制到了正确位置。
- 确认显卡驱动版本支持所装的 CUDA 版本。
- 在命令行执行
nvidia-smi,看能否正常输出显卡信息。
4.4 在 PyCharm 里绑定这个环境
PyCharm 新建项目时,解释器选择「Existing interpreter」,然后指向Anaconda安装目录/envs/pytorch/python.exe。绑定后,PyCharm 右下角会显示当前环境名,运行脚本时用的就是这个环境里的包。如果你在 PyCharm 里装包,注意看它用的是不是这个环境的 pip,别装到 base 里去了。
5. 避坑指南:五个让我重装过环境的血泪教训
5.1 坑一:pip 和 conda 混用导致依赖冲突
现象:在 conda 环境里用 pip 装了 PyTorch,又用 conda 装了另一个包,结果 conda 把 PyTorch 的依赖降级了,GPU 不可用。
原因:conda 和 pip 各自维护一套依赖解析逻辑,conda 不知道 pip 装了什么,pip 也不管 conda 的包。混用时容易互相覆盖。
解决:一个环境里尽量只用一种包管理器。装 PyTorch 用 conda 命令就全程 conda,用 pip 就全程 pip。如果必须混用,先用 conda 装完所有 conda 包,最后再用 pip 装 conda 里没有的包。
5.2 坑二:CUDA 版本和 PyTorch 版本不匹配
现象:torch.cuda.is_available()返回 False,或者 import torch 时报undefined symbol错误。
原因:装的是 CUDA 11.0 的 PyTorch,但系统里装的是 CUDA 10.2,或者反过来。
解决:用conda list查看环境里 cudatoolkit 的版本,用nvcc --version查看系统 CUDA 版本,确保两者一致。不一致就重装对应版本的 PyTorch。
5.3 坑三:cuDNN 文件没复制全
现象:PyTorch 能 import,但一跑 GPU 运算就报cuDNN error。
原因:cuDNN 解压后有三个文件夹,只复制了bin里的 dll,忘了复制include和lib。
解决:重新解压 cuDNN,把bin、include、lib三个文件夹的内容分别复制到 CUDA 安装目录的同名文件夹里。复制时选「合并」而不是「替换」。
5.4 坑四:Python 版本选太高导致老代码跑不了
现象:环境建好了,PyTorch 也装上了,但跑项目代码时报语法错误或某个包没有对应版本的 wheel。
原因:选了 Python 3.10 或 3.11,但项目依赖的某个老包只支持到 3.8。
解决:建环境前先看项目requirements.txt或setup.py里有没有 Python 版本限制。没有明确要求的话,深度学习项目选 3.8 是最稳妥的。
5.5 坑五:忘了激活环境就直接装包
现象:装完 PyTorch 后,在 PyCharm 里跑代码提示No module named 'torch'。
原因:装包时没激活 pytorch 环境,装到 base 里去了。
解决:养成习惯,打开终端第一件事就是conda activate pytorch,看到提示符前面有(pytorch)再执行安装命令。装完后用pip show torch确认安装位置在 pytorch 环境的 site-packages 下。
6. 多环境管理与环境迁移的实用技巧
当你手里同时有三四个项目时,环境管理就成了一门必修课。我一般会遵循几个习惯:每个项目一个环境,环境名带项目缩写和框架版本,比如seg-torch17、nlp-tf15。这样一看名字就知道该激活哪个。
查看所有环境用conda env list,删除不用的环境用conda env remove -n 环境名。导出环境配置用conda env export > environment.yml,别人拿到这个文件后执行conda env create -f environment.yml就能复现一模一样的环境。但要注意,environment.yml里会包含本地路径和 pip 装的包,跨平台迁移时可能需要手动调整。
还有一个技巧是给环境瘦身。conda 环境用久了会积累很多缓存和无用包,执行conda clean --all可以清理下载缓存,conda list --revisions可以查看环境的历史版本,必要时用conda install --revision N回滚到某个状态。这相当于给环境装了个后悔药,装错包导致环境崩了可以快速恢复。
最后说一个验证环境是否真的独立的办法:在两个环境里分别执行python -c "import numpy; print(numpy.__version__)",如果输出的版本号不同,说明隔离生效了。如果相同,检查一下是不是两个环境指向了同一个 site-packages。
从那以后我每次新建环境,都会先跑一遍conda env list确认环境建好了,再激活、装包、验证 GPU,最后才打开 PyCharm 写代码。这套流程走下来多花五分钟,但能省掉后面几个小时的排错时间。希望帮到你。
本文还有配套的精品资源,点击获取