记录一下Jupyter Notebook的安装和配置的全过程,将其调配至我觉得最舒服的一个状态。

下载安装本体
在CMD窗口输入 pip install jupyter ,pip会自动帮忙下载并安装好Jupyter Notebook的本体。
如果跟我一样不喜欢最新V7版本的Notebook界面的话,可以再在CMD窗口输入 pip install --upgrade notebook==6.5.6 来安装回经典界面的V6版本的Notebook。

下载安装插件
在CMD窗口输入 pip install jupyter_contrib_nbextensions ,再输入 jupyter contrib nbextension install --user ,pip会自动帮忙下载并安装好Jupyter Notebook的插件模块。

初始化Jupyter配置文件
在CMD窗口输入 jupyter notebook --generate-config ,如果之前从未生成过配置文件,则会在C:\Users\%USERNAME%\.jupyter\jupyter_notebook_config.py路径下生成个默认配置文件;如果之前已经存在配置文件了,则会提示是否用默认配置文件去覆盖当前的配置文件。

修改Jupyter配置文件
用文本编辑器打开先前生成的配置文件jupyter_notebook_config.py,这其实就是个Python文件,每行代码最前面的 # 代表注释,去掉 # 则该行代码会生效。需要修改以下部分:

  • 将内核管理器类 c.NotebookApp.kernel_manager_class 修改为 c.NotebookApp.kernel_manager_class = 'notebook.services.kernels.kernelmanager.AsyncMappingKernelManager' 。
  • 将文件浏览根目录 c.NotebookApp.notebook_dir 修改为自己想要存放代码的目录路径,比如说 c.NotebookApp.notebook_dir = 'E:/code/jupyter' 。
  • 检查以上修改的代码行最前面是不是已经没有 # 了,这样才会生效。

初始化IPython配置文件
在CMD窗口输入 ipython profile create ,如果之前从未生成过配置文件,则会在C:\Users\%USERNAME%\.ipython\profile_default\ipython_config.py路径下生成个默认配置文件。

修改IPython配置文件
用文本编辑器打开先前生成的配置文件ipython_config.py,这其实就是个Python文件,每行代码最前面的 # 代表注释,去掉 # 则该行代码会生效。需要修改以下部分:

  • 将文本框最大宽度 c.PlainTextFormatter.max_width 修改为 c.PlainTextFormatter.max_width = 200 。
  • 检查以上修改的代码行最前面是不是已经没有 # 了,这样才会生效。

修改界面样式文件
在Python的安装根目录下,按照路径\Lib\site-packages\notebook\static\custom\custom.css找到自定义样式文件,用文本编辑器打开,里面除了一段注释以外就没有其他内容了。另起一行新增以下内容并保存:

如果以上方法无效,还可以在系统盘(以C盘为例)用户目录(以用户名为Administrator为例)下按照路径C:\Users\Administrator\.jupyter\custom\custom.css依次新建文件夹和文件,然后用文本编辑器打开输入以上内容并保存即可。

安装及配置插件
在CMD窗口输入 jupyter notebook 启动Jupyter Notebook,浏览器会跳转到Jupyter Notebook的应用界面。点击顶上菜单栏的Nbextensions按钮,进入到插件页面。以下是启用的插件及具体配置:

  • ScrollDown
    文本框窗口会随着打印输出新内容一直往下滚动,保证能一直看到新的输出内容。
  • Table of Contents (2)
    会根据Markdown文本块的标题生成一个目录窗口,可以固定在界面左边空白处。
  • Variable Inspector
    会提供一个窗口显示当前所有存在的变量,及其名称、类型、大小、值等等。
  • ExecuteTime
    可以显示每个代码块运行的开始时间、结束时间、消耗时间。
  • Hide input all
    可以一键隐藏/展开所有的输入块,仅显示文本内容。

集成多版本Python内核(可选)
如果安装了多个版本的Python,那么可以在一套Jupyter Notebook中集成所有其他版本的Python内核,不需要大费周章去切换Python版本的优先级,也不需要每个Python版本都安装配置一套Jupyter Notebook。需要使用不同版本的Python时,仅需点个按钮就可以切换到不同的Python内核,非常方便实用。
假设当前已经安装了Python 3.6及Jupyter Notebook,这时又新安装了Python 3.10,现在要做的就是把Python 3.10的内核也集成到Python 3.6的Jupyter Notebook中。操作步骤如下:

  1. 把Python 3.10切换到第一优先级,或者进入到Python 3.10的安装根目录下,在CMD窗口输入 pip install ipykernel ,把Python 3.10的ipykernel给安装上。
  2. 在Python 3.10的安装根目录下,按照路径\share\jupyter\kernels\python3找到个叫python3的文件夹,由于文件夹的名字会被识别成内核的名字,为了区分故将文件夹改名成python310
  3. 进入到这个python310文件夹中,用文本编辑器打开其中的kernel.json文件,需要将 "argv" 的第一个参数改成Python 3.10的执行程序的绝对路径(路径得用 / 或者 \\ ),还有将 "display_name" 改成要显示的内核的名字。改好后如下:
  4. 在Python 3.6的安装根目录下,按照路径\share\jupyter\kernels进入到kernels目录下,这里同样也会存在个叫python3的文件夹,稍后再对其进行处理,先将之前的python310文件夹复制到这里。
  5. 和之前同样做法,将这个叫python3的文件夹改名成python36,便于识别区分。
  6. 如法炮制,进入到这个python36文件夹中,用文本编辑器打开其中的kernel.json文件,需要将 "argv" 的第一个参数改成Python 3.6的执行程序的绝对路径(路径得用 / 或者 \\ ),还有将 "display_name" 改成要显示的内核的名字。改好后如下:
  7. 若之前有将Python 3.10切换到第一优先级,则现在把Python 3.6切换回第一优先级。
  8. 在CMD窗口输入 jupyter kernelspec list 显示目前Jupyter Notebook已经配置好的Python内核详情,其中理应存在 python36 和 python310 两个内核及其路径信息,这就代表内核的配置已经完成。

至此,在Jupyter Notebook中,无论是在新建Notebook时还是切换当前Notebook所使用的内核,都可以选择已经配置好的不同Python版本的内核。