远程jupyter+pycharm配置(一)之安装与使用技巧

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

远程jupyter+pycharm配置(⼀)之安装与使⽤技巧
前⾔
作为⼀个数据⼯程师,最喜欢的事情就是不停的在现实的服务端环境调试代码的参数。

我们在本地的环境与⽣产的状况决然不同,我们⼀开始在本地写代码测试再部署到服务端的三板斧就不适⽤了。

最好的⽅式可以直接在linux环境下的服务端直接写代码,分步调试。

之前我在银⾏都是使⽤集成在CDSW的环境IDE,但是如今我们需要⾃⼰拼凑⼀个可⽤类似的⼯具。

这样我们就要⽤到远程jupyter,即服务端提供jupyter server,⽽我们只需要直接在本地环境直接使⽤server暴露的web接⼝上直接写代码,分步调试运⾏测试即可。

作为⼀个仅仅做数据的开发⼈员,我更喜欢使⽤pycharm的源码查看,跳转等功能。

所以最终我们需要的是⼀个远程jupyter+pycharm配置的IDE⼯具。

本篇⽂章就是搭建⼀个如此好⽤的神兵利器的博客说明书。

什么是Jupyter notebook?
Jupyter notebook是⼀种 Web 应⽤,基于⽹页的⽤于交互计算的应⽤程序,可⽤于全过程计算:开发、⽂档编写、运⾏代码和展⽰结果。

以前⼜称为IPython notebook,是⼀个交互式笔记本, ⽀持运⾏40+种编程语⾔. 可以⽤来编写漂亮的交互式⽂档
Jupyter notebook特别适合做数据处理,其⽤途可以包括数据清理和探索、可视化、机器学习和⼤数据分析,源于 Fernando Perez 发起
的IPython项⽬。

IPython 是⼀种交互式 shell,与普通的 Python shell 相似,但具有⼀些更⾼级的功能,例如语法⾼亮显⽰和代码补全,还有⼀些 magic 操作,⼗分⽅便。

Jupyter notebook 将 IPython 做成了⼀种 Web 应⽤,它的基本架构如下:
这⾥的核⼼是 notebook server,⽤户通过浏览器连接到该服务器,⽽ notebook 呈现为 Web 应⽤。

⽤户在 Web 应⽤中编写的代码通过该服务器发送给内核,内核运⾏代码,并将结果发送回该服务器。

然后,任何输出都会返回到浏览器中。

保存 notebook 时,它将作为JSON⽂件(⽂件扩展名为.ipynb)写⼊到该服务器中。

此架构的⼀个优点是,内核⽆需运⾏ Python。

由于 notebook 和内核分开,因此可以在两者之间发送任何语⾔的代码。

例如,早期的两个⾮ Python 内核分别是 R 语⾔和 Julia 语⾔。

使⽤ R 内核时,⽤ R 编写的代码将发送给执⾏该代码的 R 内核,这与在Python 内核上运⾏ Python 代码完全⼀样。

IPython notebook 已被改名,因为 notebook 变得与编程语⾔⽆关。

新的名称 Jupyter 由Julia、Python和R组合⽽成。

servers:jupyterhub 需要登录的多⽤户笔记本
tmpnb 不需要登录的临时笔记本
nbgrader 作为任务创建和分级的笔记本
nbviewer ⽹站笔记本的HTML视图
Applications: nbconvert 将笔记本⽂件转换为其他格式
notebook Jupyter notebook 应⽤相当于Django的app
qtconcle 控制应⽤
jupyter_consle Jupyter 终端应⽤
API:nbformat ipython ⽂件下载,保存,格式版本迁移和信托
jupyter_client
jupyter_core jupyter命令,配置⽂件和⽂件系统位置
Kernerl : ipywidgets 交互组件
ipython python代码执⾏,魔法语法和ipython终端交互
ipykernel 内核通讯协议
traitlets 所有依赖:配置系统和⼩部件基础层
1.安装指南:
1.安装jupyter
我们已经安装anaconda环境,conda activate user后直接执⾏如下命令
conda install jupyter
安装成功后按如下步骤:
1. 前置条件:⼀个配置⽂件
第⼀步就⽣成配置⽂件jupyter_notebook_config.py
jupyter notebook --generate-config
如果是root ⽤户执⾏时需要加上--allow-root选项
jupyter notebook --generate-config --allow-config
2. ⽣成密码
bash⽣成
jupyter notebook password
Enter password: xxxx
Verify password: xxxx
[NotebookPasswordApp] Wrote hashed password to /home/rdev/jupyter/jupyter_notebook_config.json
也可以python环境下⽣成
>from notebook.auth import passwd
>passwd()
Enter password:xxxxx
Verify password:xxxxx
res: 'sha1:xxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
passwd()⽅法在没有传⼊参数时候,会如上所⽰提⽰输⼊和验证密码,它也可以传⼊⼀个字符串作为密码,即passwd('12345'),但不建议这种做法,因为本来输⼊命令都会被保存起来,直接输⼊密码,相当于密码以明⽂⽅式保存在输⼊历史。

3.添加到配置⽂件
将哈希密码添加到配置⽂件jupyter_notebook_config.py
# ip 设置为 *
c.NotebookApp.ip = '*'
# 密码设置为 sha1
c.NotebookApp.password = u'sha1:xxxxx:xxxxxxxxxxx<your hashed password here>'
# 浏览器设置不打开
c.NotebookApp.open_browser = False
# 设置⼀个固定的接⼝
c.NotebookApp.port = 8888
1.官⽅教程是建议c.NotebookApp.ip设置为*,但实际上这样操作可能会连接失败,所以可以选择设置为0.0.0.1或者就是服务器的 IP
2.服务器端⼝默认为80,但是80端⼝基本都会被占⽤建议设置8888或者8899等等
4.采⽤ SSL 加密通信(可选)
采⽤密码的同时使⽤带有⽹站证书的 SSL ,可以避免哈希的密码被⾮加密的形式发送给浏览器。

但是⼀般运维⼈员会只暴露服务器端⼝给公司的⽹段,所以这⼀项是可选项。

可以是先使⽤openssl命令⽣成ssl证书和key
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout sslkey.key -out sslcert.pem
再修改配置⽂件:
# 证书的信息
c.NotebookApp.certfile = u'/home/rdev/sslcert.pem'
c.NotebookApp.keyfile = u'/home/rdev/sslkey.key'
4.启动jupyter
启动的时候就可以不带后⾯的参数
1.带参数
jupyter notebook
2.不带参数
jupyter notebook --certfile=sslcert.pem --keyfile sslkey.key
2.pycharm集合jupyter
建⽴项⽬后,创建ipynb⽂件,选择相应的服务器地址,端⼝为8888 token就是登⼊密码
3.jupyter Notebook 扩展⼯具
如果没有安装插件管理器,打开jupyter notebook后菜单栏只有如下3项,
Files
Running
Clusters
我们需要安装插件管理器来管理我们需要的插件,
第⼀步:⽤conda安装插件管理包
conda install -c conda-forge jupyter_contrib_nbextensions
conda install -c conda-forge jupyter_nbextensions_configurator
并导航⾄新的 Nbextensions 选项卡:
勾选disable configuration for nbextensions without explicit compatibility (they may break your notebook environment, but can be useful to show for nbextension development),否则下⽅插件是不可选状态。

5款NB 的插件。

Table of Contents
Execute Time
Nofity
Codefolding
Hinterland
1.Table of Contents:使⽤链接Table of Contents 的⽅式追踪定位所有单元格
2.Autopep8:规范化代码
3.variable inspector:显⽰你在 notebook 中创建的所有变量的名称,以及它们的类型、⼤⼩、形状和值。

4.ExecuteTime:显⽰单元格的运⾏时间和耗时
不过我感觉都不如pycharm⾹
4.快捷键:
红框⾥是绿⾊时,为编辑模式,在命令模式时按 Enter 会进⼊编辑模式;
红框⾥是蓝⾊时,为命令模式,在编辑模式时按 ESC 会进⼊命令模式;
通⽤模式(编辑模式与命令模式均可)快捷键:
调出控制⾯板:Ctrl + Shift + P
运⾏当前单元格,选中下⽅单元格:Shift + Enter
运⾏当前单元格:Ctrl + Enter
运⾏当前单元格,在下⽅插⼊新单元格:Alt + Enter
保存 ipynb ⽂件:Ctrl + S
编辑模式快捷键:
切换为命令模式:ESC
在光标处分割单元格:Ctrl + Shift + 减号
光标挪⾄⾏⾸或⾏尾:Alt + ←或→
按单词挪动光标:Ctrl + ←或→
缩进:TAB
取消缩进:Shift + TAB
删除光标前的整个单词:Ctrl + Backspace
删除光标后的整个单词:Ctrl + Delete
显⽰函数提⽰:Shift + TAB,按⼀次显⽰简略信息,按两次显⽰详细信息,按三次 10 秒内固定显⽰,按四次,函数信息固定显⽰在界⾯下⽅。

移动到上⼀个单元格:↑
移动到下⼀个单元格:↓
复制光标所在整⾏:Ctrl + C,注:不要选择任何内容
剪切光标所在整⾏:Ctrl + X,注:不要选择任何内容
其它复制、剪切、黏贴、重做、取消等快捷键与 Windows 标准快捷键⼀样。

命令模式快捷键:
切换为编辑模式:Enter
选中单元格改为代码格式:Y
选中单元格改为 Markdown 格式:M
选中单元格改为原⽣格式:R
当前单元格上⽅插⼊单元格:A
当前单元格下⽅插⼊单元格:B
删除选中单元格:DD,即连续按两次 D 键
恢复删除的单元格:Z
复制选中单元格:C
剪切选中单元格:X
黏贴选中单元格:V
查找与替换内容:F
隐藏 / 显⽰输出内容:O
隐藏 / 显⽰代码⾏号:L
扩展选择当前单元格上⽅单元格:Shift + ↑
扩展选择当前单元格下⽅单元格:Shift + ↓
合并多个单元格:Shift + M
重启内核:00,即连续按两次零
5.像数据科学家⼀样使⽤notebook
如何⽤notebook做⼀个综合代码,数据,ppt和excel以及pdf的数据报告
Qgrid
Qgrid也是⼀个Jupyter的⼩部件,不过它主要⽤于数据帧,装上之后,就可以像操作Excel⾥的筛选功能⼀样,⽅便的处理数据。

# only required if you have not added conda-forge to your channels yet
conda config --add channels conda-forge
conda install qgrid
使⽤:
import qgrid
excel_grid=qgrid.show_grid(df.head(20),show_toolbar=True)
excel_grid
# pip
pip install ipywidgets
jupyter nbextension enable --py widgetsnbextension
# Conda
conda install -c conda-forge ipywidgets
#Installing ipywidgets with conda automatically enables the extension。

相关文档
最新文档