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上有人一早解决了这个问题。
# 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 时,这项扩展非常有用,它可以让你隐藏部分内容。
-
- 通知 Notify
当你长时间运行一个任务程序的时候,程序运行结束后,此扩展功能会自动提醒你。
如需使用此扩展,你需要勾选其对应得选择框,并点击
Notify
按钮来选择一个最短通知时间,即 notebook 最少持续运行多久后进行提醒。(需要注意的是,这个扩展只有在 notebook 被浏览器正常打开的情况下才能正常工作。) - 通知 Notify
-
- 代码折叠
Code folding
-
- 进度条
tqdm_notebook
tqdm 本质上不是一个 notebook 的扩展,它是 Python 中的一个进度条库。 但是此库有时在 jupyter notebooks 会无法正常工作。 Randy Olson 给出一个小小的提醒:
tqdm 是一个 Python 的进度条库,在 jupyter notebook 中则被称之为 “tqdm_notebook”。自从在 nootbook 中加入了 tqdm_notebook 扩展功能,你再也不用担心其引发的混乱问题了。 (Randy Olson 2018 年 3 月 2 日)
-
-
%debug这个本质上也不是 notebook 的一个扩展,而是 IPython 中的一个魔法命令。为了加深你的理解,建议你读一读 Radek Osmulski 的发布 twitter 上的推文。
%debug 魔法命令
-
- 得到了一个异常
-
- 重新插入一个新的输入框,输入 %debug,然后运行它
交互式的调试方法可以打开并显示代码出现异常的语句,方便你联系前后程序查看具体情况。
(Radek 2017年12月26日)
- 重新插入一个新的输入框,输入 %debug,然后运行它
-
-
-
- 其他小的拓展与技巧
%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";
来源:CSDN
作者:MHuiG
链接:https://blog.csdn.net/BLueberry_Pie/article/details/103752116