由于 d2l 安装 中的指南并不详情,且 M1 的 Mac 踩了比较多的坑,在此记录一下。

安装 miniconda

首先 miniconda 是一个环境管理工具,用来快速切换环境,有些类似前端的 nnvm 用来快速切换 node 版本。

python 镜像切换

  • pip config list 查看 python 配置
  • pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 切到清华源
    • pip config unset global.index-url 切回官方源
  • ~/.config/pip/pip.conf 所有配置的存储路径

conda

  • ~/miniconda3/bin/conda init 本质上是在 bash_profile 中追加 conda 的环境
  • conda create --name d2l python=3.9 -y 创建一个 d2l 的环境名字,用于后续切换
  • conda activate d2l 用于激活 d2l 的环境
    • conda deactivate 用于恢复环境

    验证,只有所有以下命令的路径都指向 ~/miniconda3/envs/d2l/bin/* 说明成功,否则可能需要清理环境,或使用绝对路径。

(d2l) $ which pip3
/Users/zhoukeke/miniconda3/envs/d2l/bin/pip3
(d2l) $ which python
/Users/zhoukeke/miniconda3/envs/d2l/bin/python
(d2l) $ which jupyter
/Users/zhoukeke/miniconda3/envs/d2l/bin/jupyter
(d2l) $ which pip
/Users/zhoukeke/miniconda3/envs/d2l/bin/pip

推荐安装

下载书本后,会发现 tensorflow 的部分样例是没有的,然后通过文件夹 size 大小的判断,paddle 的样例应该是最全的,所以,先推荐安装 paddle。

mxnet 在 M1 Mac 上暂不支持,需要从源码编译,就比较折腾,所以也不怎么推荐。

$ du -sh ./*
 60M	./mxnet
135M	./paddle
 60M	./pytorch
 54M	./tensorflow

Paddle 环境安装

因为我的 Mac 环境有污染,所以,为方便起见,直接用绝对路径安装,如果你的 conda 环境正常污染,则直接用 pip3 install d2l==0.17.6 paddlepaddle 即可。

~/miniconda3/envs/d2l/bin/pip3 install d2l==0.17.6
~/miniconda3/envs/d2l/bin/pip3 install paddlepaddle

jupyter

  • conda install jupyter 来安装
    • ~/miniconda3/envs/d2l/bin/pip3 install jupyter 来安装(环境有污染的情况下)
  • jupyter notebook 用于启动
    • ~/miniconda3/envs/d2l/bin/jupyter notebook 来启动(环境有污染的情况下)

污染环境清理

如果污染环境不清理,conda 的环境容易被污染和复写。

jupyter 包括 brew、系统自带的。参考 how-to-uninstall-jupyter

/opt/homebrew/bin/pip3 uninstall jupyter jupyter_core jupyter-client jupyter-console jupyterlab_pygments qtconsole notebook nbconvert nbformat nbclassic nbclient jupyterlab-widgets jupyter-events jupyter-server jupyter-server-terminals

/Library/Frameworks/Python.framework/Versions/2.7/bin/pip uninstall jupyter jupyter_core jupyter-client jupyter-console jupyterlab_pygments qtconsole notebook nbconvert nbformat nbclassic nbclient jupyterlab-widgets jupyter-events jupyter-server jupyter-server-terminals

验证

# 默认环境无 jupyter,无法找到相关命令
(base) $ jupyter
zsh: command not found: jupyter

# 启动 conda 的 d2l 环境,能正常使用,则说明环境无污染
(base) $ conda activate d2l
(d2l) $ jupyter
usage: jupyter [-h] [--version] ...

Python 环境验证

# 在 d2l 环境中,python 为 d2l 的 python,且版本为 3.9
(d2l) $ python --version
Python 3.9.18
(d2l) $ which python
/Users/zhoukeke/miniconda3/envs/d2l/bin/python
(d2l) $ conda deactivate

# 在非激活环境下,python 为正常的路径,版本为 3.11.4
(base) $ which python
/Users/zhoukeke/miniconda3/bin/python
(base) $ python --version
Python 3.11.4

参考