简介:这份资源面向深度学习入门者与Windows平台新手,聚焦《动手学深度学习》配套环境的搭建问题,帮助读者在正式跑通书中代码前扫清安装障碍。资源包共1个文件,为399KB的PDF文档,内容以图文结合方式梳理Miniconda安装、代码压缩包下载、清华镜像源配置、conda虚拟环境创建与依赖库安装等关键环节,并配有截图辅助对照。文档还针对environment.yml自动安装失败的情况给出排查思路,包括激活gluon环境、用pip list核对依赖、手动逐条安装mxnet、d2lzh、jupyter、matplotlib、pandas等指定版本,最后说明如何启动Jupyter Notebook验证环境。目前已有5143人学习,适合希望按步骤复现环境、减少踩坑的初学者参考。
1. 手动装一遍《动手学深度学习》的 gluon 环境:为什么我不推荐一键脚本
很多人第一次跑《动手学深度学习》的代码,卡住的地方不是反向传播,也不是卷积核尺寸,而是conda activate gluon之后发现mxnet根本没装上。我见过太多人用conda env create -f environment.yml一把梭,结果卡在 Solving environment 半小时,最后环境是建好了,pip list一看,该有的包一个没有。这本书的 1.0 版本配套的是 MXNet 1.5.0 和d2lzh1.0.0,版本锁得很死,自动解析依赖在 Windows 上翻车概率极高。所以这篇笔记不走捷径,就按手动安装的路子,把 Miniconda 安装、镜像配置、虚拟环境创建、依赖逐个补齐、Jupyter 启动这条链路完整走一遍。适合 Windows 上刚接触深度学习环境配置、被environment.yml坑过的读者,也适合想搞清楚 conda 和 pip 分工边界的人。
2. 环境底座:Miniconda 安装与 pip 镜像配置
2.1 为什么选 Miniconda 而不是完整版 Anaconda
Anaconda 完整版装完接近 3GB,预装了几百个包,其中大部分你根本用不到,而且 base 环境里包一多,后面创建虚拟环境时依赖解析更容易冲突。Miniconda 只带 conda、python 和少量基础工具,安装包 50MB 左右,装完干净,适合拿来当深度学习环境的底座。另一个原因是《动手学深度学习》的environment.yml里指定了python=3.7这个版本,完整版 Anaconda 的 base 环境 python 版本往往偏高,直接用 base 跑书里的代码会遇到语法兼容问题,所以必须用 conda 单独开一个虚拟环境。
安装时有一个选项必须勾上:Add Anaconda to the system PATH environment variable。不勾的话,安装完在 cmd 里敲conda会提示不是内部或外部命令,后面每一步都得先手动进 Anaconda Prompt,很麻烦。勾上之后,任意 cmd 窗口都能直接用 conda 和 pip。
2.2 安装 Miniconda 的具体步骤
从 Miniconda 官网下载 Windows 64 位安装包,双击运行,一路 Next,到 Advanced Options 页面时把两个勾都打上:
- Add Anaconda to the system PATH environment variable
- Register Anaconda as my default Python
安装完成后,打开一个新的 cmd 窗口,输入下面命令验证:
conda --version python --version如果分别输出了 conda 版本号和 Python 版本号,说明 PATH 配置生效了。这里有个细节:如果你之前装过 Python 官方版,PATH 里可能有两个 python.exe,python --version输出的不一定是 Miniconda 带的那个。用where python看一下路径顺序,Miniconda 的路径应该排在前面。
2.3 配置 pip 国内镜像源
conda 和 pip 默认从国外站点拉包,国内下载 MXNet 这种几十兆的包经常断流。配置清华镜像是最常见的做法:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这条命令会在用户目录下生成 pip 配置文件,之后所有 pip install 都走清华源。执行完可以用pip config list确认配置写进去了。
注意:这条命令只影响 pip,不影响 conda。conda 的镜像需要另外改
.condarc文件,但本文的依赖全部用 pip 装,所以 conda 镜像可以不动。
3. 虚拟环境创建与依赖手动补齐
3.1 下载代码包并理解 environment.yml
从https://zh.d2l.ai/d2l-zh-1.0.zip下载代码压缩包,解压到d2l-zh文件夹。在该文件夹地址栏输入cmd回车,直接在当前目录打开命令行。用文本编辑器打开environment.yml,你会看到类似这样的内容:
name: gluon dependencies: - python=3.7 - pip: - mxnet==1.5.0 - d2lzh==1.0.0 - jupyter==1.0.0 - matplotlib==2.2.2 - pandas==0.23.4这个文件定义了环境名gluon、Python 版本 3.7,以及 pip 需要装的五个包及其精确版本号。理解这一点很关键:conda env create -f environment.yml做的事情就是先建环境、装 Python,再把 pip 部分的包交给 pip 去装。如果这一步卡住或者装完缺包,我们就拆开手动做。
3.2 创建虚拟环境
先只创建环境,不装依赖:
conda create -n gluon python=3.7执行过程中 conda 会列出将要安装的包,输入y确认。这一步只装 Python 3.7 和基础依赖,速度很快。创建完成后激活环境:
conda activate gluon激活成功后,命令行提示符前面会出现(gluon)字样。如果提示conda init相关错误,说明 shell 没初始化,执行一次conda init cmd.exe然后重开窗口即可。
3.3 逐个安装依赖包
激活环境后,按environment.yml里的版本号逐个装:
pip install mxnet==1.5.0 pip install d2lzh==1.0.0 pip install jupyter==1.0.0 pip install matplotlib==2.2.2 pip install pandas==0.23.4每装完一个,用pip list检查是否出现在列表里。MXNet 1.5.0 的包比较大,下载时间取决于网速,走清华源一般几分钟内能完成。五个包全部装完后,再跑一次pip list,对照environment.yml逐个核对版本号。
这里解释一下为什么不用conda env create -f environment.yml一步到位:conda 在解析environment.yml时,会尝试用 conda 的依赖求解器去处理 pip 部分的包,Windows 上经常出现求解时间过长或者求解失败的情况。手动拆开之后,conda 只管建环境和装 Python,pip 只管装包,各司其职,出问题也容易定位。
3.4 验证环境是否可用
装完之后做两个验证。第一,确认 Python 能正常启动:
python出现Python 3.7.x的版本号和>>>提示符就说明 Python 没问题,输入exit()退出。第二,确认 MXNet 能导入:
python -c "import mxnet; print(mxnet.__version__)"如果输出1.5.0,说明 MXNet 安装成功。同样的方式可以验证d2lzh:
python -c "import d2lzh; print('ok')"两个都通过,环境就算配好了。
4. 避坑排查:手动安装 gluon 环境时最容易翻车的五个地方
4.1 conda activate 报错 run 'conda init' before 'conda activate'
现象:在 cmd 里执行conda activate gluon,提示CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'。
原因:Miniconda 安装时虽然勾了 PATH,但 conda 的 shell 初始化脚本没有写入 cmd 的启动配置,导致 activate 命令不可用。
解决:执行conda init cmd.exe,然后关闭当前窗口重新打开一个 cmd。如果还不行,直接用activate gluon(不带 conda 前缀)试试,老版本 conda 支持这种写法。
4.2 pip install mxnet 卡在下载或超时
现象:执行pip install mxnet==1.5.0后进度条长时间不动,最后报ReadTimeoutError。
原因:pip 镜像没配置成功,或者配置写到了另一个用户目录下。也有可能是清华源当时同步延迟。
解决:先pip config list确认global.index-url指向清华源。如果没有,重新执行pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple。临时应急可以在命令后面加-i https://pypi.tuna.tsinghua.edu.cn/simple强制指定源。
4.3 pip list 里包版本对不上 environment.yml
现象:装完之后pip list发现 matplotlib 是 3.x 版本,不是 2.2.2。
原因:之前环境里已经装过其他版本的包,pip 没有降级,或者安装时漏了==版本锁定。
解决:先卸载再装指定版本,例如pip uninstall matplotlib -y然后pip install matplotlib==2.2.2。批量处理可以用pip install --force-reinstall matplotlib==2.2.2。
4.4 删除环境时提示环境不存在
现象:执行conda remove -n gluon --all报EnvironmentNameNotFound。
原因:环境名拼写错误,或者环境已经被删过了。用conda info --envs查看当前所有环境列表,确认 gluon 是否还在。
解决:如果列表里没有 gluon,说明已经删干净了,不需要再删。如果有但删不掉,加--force参数强制删除。
4.5 Jupyter Notebook 启动后找不到 gluon 环境
现象:jupyter notebook能打开浏览器,但新建 notebook 时 Kernel 列表里没有 Python 3.7 对应的 gluon 环境。
原因:Jupyter 是在 base 环境里启动的,看不到其他虚拟环境的内核。
解决:确保是在conda activate gluon之后启动的 jupyter。如果还是不行,在 gluon 环境里执行python -m ipykernel install --user --name=gluon,手动把环境注册为 Jupyter 内核。
5. 启动 Jupyter 并跑通第一个 Notebook:一个验证环境完整性的技巧
环境配好之后,在d2l-zh目录下、gluon 环境激活状态下执行:
jupyter notebook浏览器会自动打开 Jupyter 主页,能看到d2l-zh文件夹下的章节 notebook 文件。点开chapter_prerequisite/ndarray.ipynb,这是书中第二讲预备知识的第一节,内容是关于 NDArray 的基本操作。打开后确认右上角 Kernel 显示的是 Python 3,然后依次点击菜单栏的 Cell → Run All。
如果所有 cell 都顺利执行完,没有报ModuleNotFoundError,说明环境完全可用。这里有一个我常用的验证技巧:不要只跑一个 notebook,把chapter_prerequisite目录下的几个 notebook 都 Run All 一遍。因为ndarray.ipynb只用到 mxnet 和 d2lzh,而linear-regression.ipynb还会用到 matplotlib 和 pandas,全部跑通才能确认五个包都装对了。
还有一个细节值得注意:Jupyter 默认的工作目录是你启动它时所在的目录。如果你在d2l-zh目录下启动,notebook 里的相对路径引用(比如加载数据文件)才能正确解析。如果从其他目录启动,可能会遇到文件找不到的问题。我一般会在d2l-zh目录下建一个启动脚本start.bat:
conda activate gluon jupyter notebook双击就能直接进入工作状态,省去每次手动激活环境的步骤。
从那以后我每次配新环境,都会先跑一遍chapter_prerequisite下的全部 notebook 再开始正式学习,这个习惯帮我省了很多后面调试的时间。希望帮到你。
本文还有配套的精品资源,点击获取