抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >


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 时,这项扩展非常有用,它可以让你隐藏部分内容。

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

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

    1. 代码折叠

    Code folding

    1. 进度条

    tqdm_notebook

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

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

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

      % debug 魔法命令

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

% 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";
推荐阅读
Package Manager Proxy Settings Package Manager Proxy Settings CentOS7安装Python3 CentOS7安装Python3 Centos7安装Anaconda3 Centos7安装Anaconda3 杂记片段 杂记片段 Nginx配置 Nginx配置 Frp内网穿透 Frp内网穿透

留言区

Are You A Robot?