ipython与jupyter_notebook安装配置使用
[TOC]
ipython安装配置使用
配置
生成配置文件
若ipython的配置文件~/.ipython/profile_default/{ipython_config.py,ipython_kernel_config.py}
不存在,则执行如下命令以创建之
ipython profile create
会返回
[ProfileCreate] Generating default config file: ‘~/.ipython/profile_default/ipython_config.py’
[ProfileCreate] Generating default config file: ‘~/.ipython/profile_default/ipython_kernel_config.py’
终端下ipython的配色
更换配色方案
默认的终端下ipython配色,__class__
等显示为深蓝色,当你的终端背景是深色时容易,深蓝字难看清,建议修改配色方案。在~/.ipython/profile_default/ipython_config.py
,找到如下两行,删除其行首”#“,并将等号后修改为
c.InteractiveShell.colors = 'Linux'
c.TerminalInteractiveShell.highlighting_style = 'monokai'
-
c.InteractiveShell.colors
是指在ipython报错用的配色 -
c.TerminalInteractiveShell.highlighting_style
是指python代码的配色。配色方案在定义在/Users/mac/anaconda/lib/python3.6/site-packages/pygments/styles/<配色方案名称>.py
这里, <配色方案名称monokai,是我找到
styles/
下较友好的配色了。
手动修改高亮
若对所选配色方案还有不满意的地方,可以手动修改指定语法成分的高亮
搜索c.TerminalInteractiveShell.highlighting_style_overrides
,然后如下改写
from pygments.token import Token, Keyword, Name, Comment, String, Error, \
Number, Operator, Generic, Whitespace
## Override highlighting format for specific tokens
c.TerminalInteractiveShell.highlighting_style_overrides = {
## Standard Pygments tokens (are all used by IPython ?)
# Whitespace: "#bbbbbb",
# Comment: "italic #008800",
# Comment.Preproc: "noitalic",
# Comment.Special: "noitalic bold",
Keyword: "bold #5fd4f9", # 8ce98c
# Keyword.Pseudo: "nobold",
# Keyword.Type: "bold #00BB00",
# Operator: "#ff736f", #
# Operator.Word: "bold #AA22FF",
Name.Builtin: "#5fd4f9",
# Name.Function: "#99f46a", #
# Name.Class: "#99f46a", #
# Name.Namespace: "bold #99f46a", #
# Name.Exception: "italic bold #89f9fc",
Name.Variable: "italic", #
# Name.Constant: "#880000",
# Name.Label: "#A0A000",
# Name.Entity: "bold #999999",
# Name.Attribute: "#BB4444",
# Name.Tag: "bold #008000",
# Name.Decorator: "#AA22FF",
# String: "#f7f86c",
# String.Doc: "italic",
# String.Interpol: "bold #BB6688",
# String.Escape: "bold #BB6622",
# String.Regex: "#BB6688",
# String.Symbol: "#71f3f6", #
# String.Other: "#008000",
# Number: "#cf97f2", #
# Generic.Heading: "bold #000080",
# Generic.Subheading: "bold #800080",
# Generic.Deleted: "#A00000",
# Generic.Inserted: "#5affb4", #
# Generic.Error: "#FF0000",
# Generic.Emph: "italic",
# Generic.Strong: "bold",
# Generic.Prompt: "bold #000080",
# Generic.Output: "#888",
# Generic.Traceback: "#04D",
# Error: "border:#ff0000",
## IPython
# Token.Number: '#ffffff',
# Token.Operator: 'noinherit',
# Token.String: '#8b8',
# Token.Name.Function: '#2080D0',
# Token.Name.Class: 'bold #2080D0',
# Token.Name.Namespace: 'bold #2080D0',
# Token.Prompt: '#ffffff bold',
# Token.PromptNum: '#888888 bold',
Token.OutPrompt: '#ff5753',
Token.OutPromptNum: '#ff5753 bold',
}
jupyter notebook 安装配置使用
已经验证此配置方法可用的环境:实验室服务器juncluster、jungpu
配置方法
ssh登录服务器
安装
进入python虚拟环境
source bin/activate
检查是否安装jupyter
jupyter
如返回未安装,则安装之
pip install jupyter
已安装则升级之
pip install -U jupyter
配置
生成配置文件
jupyter notebook --generate-config
# 返回 Writing default config to: ~/.jupyter/jupyter_notebook_config.py
会自动创建文件夹~/.jupyter
与配置文件~/.jupyter/jupyter_notebook_config.py
命令行会返回此【配置文件路径】,请保存
生成网络证书
cd ~/.jupyter
# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 3650 -out mycert.pem
回车系统会要求你填写:国家、省份、城市、单位、项目、邮箱,按真实填写之即可。
保存【证书路径】=~/.jupyter/mycert.pem
,【密钥路径】=~/.jupyter/key.pem
生成notebook登录密码
若想给notebook设置登录密码,则做此事。可以在任何电脑上做,生成的密文是一样的
ipython
In [1]: from notebook.auth import passwd
In [2]: passwd() # 创建一个密文的密码
Enter password: # 在此处设置notebook的【登录密码】
Verify password: # 重复密码
Out[2]: 'sha1:adsasdasd:34da7adasdas87d0as8d70asda8sdaasd076f018' # 会生成一个形如它的【哈希密码】
将登录密码与哈希密码保存
更改配置文件
vim /home/$USER/.jupyter/jupyter_notebook_config.py
-
通用配置
进入文件后
# 加在文件开头 import os #【证书新路径】 c.NotebookApp.certfile = os.path.expanduser(u'~/.jupyter/mycert.pem') #【密钥路径】 c.NotebookApp.keyfile = os.path.expanduser(u'~/.jupyter/key.pem') # NotebookApp的ip,'0.0.0.0'莫写成"*"。 # 写成"*"有时会报错”socket.gaierror: [Errno -5] No address associated with hostname“ c.NotebookApp.ip = '0.0.0.0' # 使得服务器上输入'jupyter notebook'命令后,不会立即进入它的浏览器 c.NotebookApp.open_browser = False # 在浏览器访问notebook,要在浏览器中输入密码,才能登陆 c.NotebookApp.password = u'【哈希密码】' # 将该【服务器端口】保存,使用固定端口号,可以随便设置,建议用不常见的,以免与其他任务的端口号冲突 # 注:若别的任务先占用了该端口,输入'jupyter notebook'命令,则会自动用该端口+1,再不行+2,以此类推 c.NotebookApp.port = 11328
-
ipython notebook的配置
老的版本的ipython,使用的是ipython notebook;新版本的ipython,已将notebook给了jupyter,故使用的是jupyter notebook
ipython notebook则还需要更
c = get_config() c.IPKernelApp.pylab = 'inline' # if you want plotting support always
jupyter notebook替代“c.IPKernelApp.pylab = ‘inline’”的配置如下,这是默认设置,不用更改
# DISABLED: use %pylab or %matplotlib in the notebook to enable matplotlib. # c.NotebookApp.pylab = 'disabled'
-
取消jupyter notebook密码
这样访问notebook就可以不需要密码
把
# c.NotebookApp.token = '<generated>'
改为
c.NotebookApp.token = ''
使用
启动notebook
-
转接
服务器若设了防火墙,浏览器无法直接访问服务器的notebook【服务器端口】,只能经ssh转接
ssh 【服务器】 -L127.0.0.1:11327:127.0.0.1:11328
注:
'-L127.0.0.1:【代理端口】:127.0.0.1:【服务器端口】' # 用户端的localhost:【代理端口】 转接到 服务器端的localhost:【服务器端口】
登录服务器后,这个转接终端不要关,直到不用notebook
-
进入虚拟环境
若jupyter装在virtualenv里,才需要这一步
source bin/activate
-
启动notebook
jupyter notebook
访问notebook
在本地电脑,使用浏览器访问https://localhost:【代理端口】
-
必须是https,jupyter不支持http
-
浏览器的选择
支持:qq浏览器/chrome浏览器/firefox浏览器
不支持:safari(可以登陆notebook的文件管理界面;但.ipynb文件的编辑界面下,无法连接到服务器的python内核) -
浏览器警告"访问不安全"
- chrome: 高级>>继续前往(不安全),即可访问,但即使此证书到钥匙串,chrome每次访问依旧警告
- safari:详细信息>>访问此网站>>接下来跟着提示步骤操作,会提示“以添加此证书到钥匙串”,之后用safari查看此网页,都不再警告
- firefox:高级>>添加例外>>勾选永远添加此例外>>确认安全例外,之后firefox查看此网页,都不再警告
相关技术
手动添加网页的证书
- 导出证书:firefox访问此网页,显示访问不安全,点高级>>添加例外>>确认安全例外>>证书状态-查看>>详细详细>>导出,导出到随便什么地方
- 打开 钥匙串访问.app,左栏分别选 登录+证书
- 若之前用safari信任了此证书,则可见你条件的证书
- 若没,则将导出的证书拖到这里,然后双击此证书,再点”信任“,全调整为“总是信任”,然后之前导出的证书可以删了
-
弹出jupyter页面,要求输入【登录密码】
只有服务器上notebook程序重启,再次登录该网页,才需要再输入密码。
服务器上notebook程序未关,本地即便断网重连,过数天重连,同一个浏览器不用再次输入密码。
脚本打开
上述启动、访问操作可以用shell或Python脚本打开实现
保持开启状态
使用tmux
推荐此法,用tmux保持转接进程和jupyter notebook一直开启
- 本机开个tmux session,用来ssh -L转接
- 服务器上开个tmux session,用来开jupyter notebook
普通方法
-
暂停jupyter notebook
服务器上按ctrl+z
,会出现[1]+ Stopped jupyter notebook
表示jupyter notebook暂停,本地浏览器上无法访问Notebook网页
-
放入后台运行
服务器上输入
bg
会出现
[1]+ jupyter notebook &
表示jupyter notebook变成后台运行。
-
查看进程
jobs
若返回有
[1]+ Running jupyter notebook &
则为jupyter notebook在后台运行
-
退出登录
ctrl+Q/W
退出服务器的登录,则jupyter notebook立即停止exit
或logout
退出服务器的登录,则jupyter notebook不会立即停止