MHuiG

「看庭前花开花落,望天上云卷云舒」

设置 Jupyter

# CentOS7 设置 Jupyter

Jupyter Notebook（前身是 IPython Notebook）是一个基于 Web 的交互式计算环境，用于创建 Jupyter Notebook 文档。Notebook 一词可以通俗地引用许多不同的实体，主要是 Jupyter Web 应用程序、Jupyter Python Web 服务器或 Jupyter 文档格式（取决于上下文）。Jupyter Notebook 文档是一个 JSON 文档，遵循版本化模式，包含一个有序的输入 / 输出单元格列表，这些单元格可以包含代码、文本（使用 Markdown 语言）、数学、图表和富媒体，通常以 “.ipynb” 结尾扩展。

## 启动

    jupyter notebook --allow-root --ip 0.0.0.0 --port 9999

默认不允许 / 不建议 root 启动 jupyter, 如果非要用，加上–allow-root
–ip ip 填写 0.0.0.0 或者本机 ip
–port 端口号

启动后，浏览器访问对应 ip 和端口就行，需要输入 token,token 在启动界面有输出

## 生产配置文件

每次记住 token，复制再登录不现实

    jupyter notebook --generate-config

生成的配置文件位于

    ~/.jupyter/jupyter_notebook_config.py

    jupyter-notebook password

输入两遍密码

启动，就可以 以固定密码登录了

    jupyter notebook --allow-root --ip 0.0.0.0 --port 999

## 设置浏览器打开 jupyter 默认路径

    vim ~/.jupyter/jupyter_notebook_config.py

## 填写自己想要的服务器路径

    c.NotebookApp.notebook_dir='/'

## 设置 jupyter 开机启动

systemctl 脚本目录：`/usr/lib/systemd/`
系统服务目录：`/usr/lib/systemd/system/`
用户服务目录：`/usr/lib/systemd/system/`

    cd /usr/lib/systemd/system/

    vim myjupyter.service

    [UNIT]

    #服务描述
    Description=python jupyter Service

    #指定了在systemd在执行完那些target之后再启动该服务
    After=network.target

    [Service]

    #定义Service的运行类型，一般是forking(后台运行)
    #Type=forking  这个会卡住啊,不写Type 或者 如下
    Type=simple

    #定义systemctl start|stop|reload *.service 的执行方法（具体命令需要写绝对路径）
    #注：ExecStartPre为启动前执行的命令
    # ExecStartPre=/usr/bin/test "x${NETWORKMANAGER}" = xyes
    ExecStart=/root/anaconda3/bin/jupyter notebook --allow-root --ip 0.0.0.0 --port 9999
    #ExecReload=
    # ExecStop=/home/mobileoa/apps/shMediaManager.sh -stop

    #创建私有的内存临时空间
    PrivateTmp=True

    [Install]

    #多用户
    WantedBy=multi-user.target

    vi /root/.jupyter/jupyter_notebook_config.py

    # Set ip to '*' to bind on all interfaces (ips) for the public server
    c.NotebookApp.ip = '*'
    # It is a good idea to set a known, fixed port for server accessy
    c.NotebookApp.port = 9999
    # 是否打开浏览器
    c.NotebookApp.open_browser = False
    #设置工作路径
    c.NotebookApp.notebook_dir = '/'

## 重载系统服务

    systemctl daemon-reload

## 设置开机启动

    systemctl enable myjupyter.service

## 启动服务

    systemctl start myjupyter.service

## 停止服务

    systemctl stop myjupyter.service

## 重启服务

    systemctl restart myjupyter.service

## Notebook 支持虚拟运行环境

为了让 Jupyter Notebook 支持虚拟运行环境，需要在 Anaconda 里安装一个插件。
回到终端下面，用 C-c 退出目前正在运行的 Jupyter Notebook Server，然后执行：

    conda install nb_conda

再重新开启

    Jupyter Notebook

或者 (better)

安装 ipykernel

首先切换到想要在 jupyter notebook 里使用的虚拟环境：

    conda activate 环境名称

安装 ipykernel：

    conda install ipykernel

写入 jupyter 的 kernel

在当前虚拟环境里执行：

    python -m ipykernel install --user --name 环境名称 --display-name "Python (环境名称)"

“环境名称” 为当前虚拟环境的名称，最后面引号内的字符串是该虚拟环境显示在 jupyter notebook 界面的名字，可以随意修改。

删除 kernel 环境

上面写入 kernel 的配置并不会随虚拟环境的删除而删除。也就是说即使删除了该虚拟环境，jupyter notebook 的界面上仍会有它的选项，只是无法正常使用。

此时就需要去手动删除 kernel 环境了：

    jupyter kernelspec remove 环境名称

## jupyter 中用 notedown 插件来读取 md 文档

    pip install https://github.com/mli/notedown/tarball/master

    vi /root/.jupyter/jupyter_notebook_config.py

    c.NotebookApp.contents_manager_class = 'notedown.NotedownContentsManager'

## Jupyter Notebook 自定义主题

安装好了 Jupyter Notebook 和 Python 之后，我们就已经搭建好啦运行和笔记环境，可以愉快的开始学习了。

于是本着爱折腾的精神和护眼的需求，我搜索了 Jupyter Notebook 的 themes，也就是自定义主题。果然 Github 上有人一早解决了这个问题。

github

    # install jupyterthemes
    pip install jupyterthemes

    # upgrade to latest version
    pip install --upgrade jupyterthemes

这时候，你就可以在 terminal 里面调用已经安装好的 themes 啦～

例如，在 terminal 中输入

    jt -l

就会返回所有你安装好的主题的名词列表，这样你就知道了你安装了哪些主题。
最终，我的选择是

    jt -t chesterish -T -N

表示我选择了 chesterish 这个主题，同时希望打开顶部的工具栏（Toolbar），显示笔记本的名字（Name）

## Jupyter 扩展配置器（ Jupyter NbExtensions Configurator）

可以通过 coda 安装：

    conda install -c conda-forge jupyter_contrib_nbextensions
    conda install -c conda-forge jupyter_nbextensions_configurator

也可以使用 pip 安装

    pip install jupyter_nbextensions_configurator
    jupyter_contrib_nbextensions
    jupyter contrib nbextension install --user
    jupyter nbextensions_configurator enable --user

- 1. 标题折叠 Collapsible headings

  当你在处理一个大型的 notebooks 时，这项扩展非常有用，它可以让你隐藏部分内容。

- 2. 通知 Notify
     当你长时间运行一个任务程序的时候，程序运行结束后，此扩展功能会自动提醒你。

  如需使用此扩展，你需要勾选其对应得选择框，并点击 `Notify` 按钮来选择一个最短通知时间，即 notebook 最少持续运行多久后进行提醒。（需要注意的是，这个扩展只有在 notebook 被浏览器正常打开的情况下才能正常工作。）

- 3. 代码折叠

  Code folding

- 4. 进度条

  tqdm_notebook

  tqdm 本质上不是一个 notebook 的扩展，它是 Python 中的一个进度条库。 但是此库有时在 jupyter notebooks 会无法正常工作。 Randy Olson 给出一个小小的提醒：

  tqdm 是一个 Python 的进度条库，在 jupyter notebook 中则被称之为 “tqdm_notebook”。自从在 nootbook 中加入了 tqdm_notebook 扩展功能，你再也不用担心其引发的混乱问题了。 （Randy Olson 2018 年 3 月 2 日）

- 5. % debug 这个本质上也不是 notebook 的一个扩展，而是 IPython 中的一个魔法命令。为了加深你的理解，建议你读一读 Radek Osmulski 的发布 twitter 上的推文。

     % debug 魔法命令

     - 1. 得到了一个异常
     - 2. 重新插入一个新的输入框，输入 % debug，然后运行它
          交互式的调试方法可以打开并显示代码出现异常的语句，方便你联系前后程序查看具体情况。
          (Radek 2017 年 12 月 26 日)
- 6. 其他小的拓展与技巧

% Ismagic ：在输入框中运行这个命令，列出所有可用的 IPython 魔法命令

zen mode 扩展： 隐藏菜单栏，让你更专注于代码

Execute time 扩展：显示程序块运行的时间

autoreload：在不重启 notebook 的情况下，自动载入外部文件，从而修改代码，具体操作如下：

%load_ext autoreload

%autoreload 2

## JUPYTER 服务的 NGINX 配置

### jupyter 配置

配置文件在

    /home/{user}/.jupyter/jupyter_notebook_config.py

配置 jupyter 的路径

    c.NotebookApp.base_url = '/jupyter/'

### nginx 配置

jupyter 使用了 websocket 协议，所以需要配置支持 websocket。

    location /jupyter/ {
        proxy_pass http://jupyter;
        proxy_set_header Host $host;
        proxy_set_header X-Real-Scheme $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # WebSocket support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 120s;
        proxy_next_upstream error;
    }

jupyter notebook 用到了 websocket, 所以需要配置

    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

Centos7安装Anaconda3

安装 Anaconda3 Centos7 安装 Anaconda3 Anaconda 是一个免费开源的 Python 和 R 语言的发行版本，用于计算科学（数据科学、机器学习、大数据处理...

CentOS7设置虚拟内存

设置虚拟内存 Linux 设置虚拟内存 虚拟内存配置 查看内存free -m -m 是显示单位为 MB，-g 单位 GB 创建一个文件touch /root/swapfile 使...

留言区

Notes
CentOS
本文目录
Are You A Robot?