作者 | luanhz       责编 | 欧阳姝黎

Jupyter 对于 Python 爱好者尤其是数据从业者来说,应该是日常使用最为频繁的工具之一了,虽然其严格来讲算不上是 IDE,但却提供了非常便捷高效的数据探索和分析挖掘的 coding 环境。Jupyter 固然好用,但如果不能充分挖掘其中的高端技巧,恐怕也不能完全发挥其功力。所以,今天本文就来分享个人在使用 Jupyter 过程中的 3 个实用技巧。

jupyter = Julia + Python + R 三种语言的混合缩略词(其中的字母 e 用于辅助发音),主要是提供了这 3 种语言的编程环境,其中由于 Python 语言近年来的日益火爆,jupyter 对 Python 使用来说更为常见。

以 Python 语言为例,jupyter 实际上是对 Python 解释器实现的 Web UI 服务包装,jupyter 内部的一个个 cell 本质上与在 Python 命令行中键入一条条代码的效果是一致的,当然这里的 Python 解释器的 ipython,一种增强型的 python 交互型解释器。既然 jupyter 本质上是一种web服务,那么自然区分在本地搭建服务或者基于服务器搭建服务,这也就是 jupyter 的本地模式和服务器模式。jupyter lab 的配置和搭建可参考是时候总结一波 Python 环境搭建问题了。

另外,jupyter 当前主要有两大版本,一个是 jupyter notebook,另一个是其升级版,即 jupyter lab。本文的3个实用技巧均面向 jupyter lab 而言,个人也一直觉得 lab 要比 notebook 更为好用。

多解释器环境设置

Python 之所以如此功能强大和广受欢迎,其中一个重要原因就是其拥有强大的第三方库生态系统,甚至可以称得上是对大部分主流开源工具均有其 Python 实现版本,例如 Echarts 可视化有 pyecharts,Spark 工具有 pyspark 等等。然后,也正是由于库太多即由之而衍生的版本兼容问题,所以针对不同应用场景和需求建立不同的 Python 虚拟环境很重要。

jupyter 对于虚拟环境十分友好的一点就是可以针对不同的虚拟环境关联提供相应的解释器环境,例如可以通过conda创建一个 python 爬虫 env,而后安装常用的爬虫库,并在 jupyter 中提供一个爬虫解释器环境;类似的就可分别创建一个数据分析、机器学习或者是深度学习解释器环境,这样在 jupyter 中使用起来便会非常丝滑。

例如,如下是在 jupyter lab 内置全局解释器 python3 的基础上,增加一个 dataScience 解释器,而后在创建 ipynb 文件时即可选用对应的解释器即可。

这里给出在 linux 下增加 jupyter 解释器的主要命令:

pip install ipykernel  # 需要安装ipykernel库用于管理解释器
# 虚拟环境名要求是已创建且存在的虚拟环境,一般使用conda管理
python -m ipykernel install --user --name 虚拟环境名 --display-name "web UI显示的解释器名称"

 %和!:强大的魔法命令和shell支持

jupyter 除提供对 ipython 解释器的 web 服务外,还扩展了强大的魔法命令。这里,魔法命令是指以 % 开头的 line 魔法或 %% 开头的 cell 魔法,大家最熟悉的可能当属即时命令:

%time # 对当前行的代码执行进行计时
%%time  # 对当前整个cell的代码执行进行计时,要求改命令位于整个cell的首行

然而除此之外,jupyter 实际上还提供了大量的魔法命令,可通过“%lsmagic”这条魔法命令本身打印输出所有魔法命令:

魔法命令打印结果分为面向 line 和面向 cell 的两类魔法命令,点开 line 魔法,我们可以看到以下几个熟悉的命令,例如 lsmagic 本身、run 以及 time 和 timeit 等,另外下面的例如 mkdir、ls、cd 等就是常用的 linux 命令。

再翻开 cell 魔法,几个值得关注的命令包括:

其中对!魔法命令的解释为“OSMagics”,意味着这是一个与系统有关的命令,实际上可以用!+linux 命令实现在 jupyter 中执行相应 linux 命令的效果。

注:通过 lsmagic 打印出魔法命令中,结果是一个嵌套的 json 格式,其中最里层的 key 即为魔法命令(上述绿字部分),后面的 value 是对其类型的解释(上述粉字部分)。

那么问题来了,说了这些魔法命令,他们有什么好用之处吗?这里简单举3个小例子:

  • 使用 !pip 命令执行第三方库安装。当部署 jupyter 所在环境具有 pip 功能时,可直接在 jupyter 中通过 !pip 便捷的对当前解释器环境的第三方库依赖进行管理,非常方便;

  • 使用 !python 或 %run 命令实现对本地 python 脚本文件的运行,其中 !python 中要求已在当前 linux 环境中配置 python 全局命令,相应的也可能是 python2 或 python3 等;

  • 灵活使用 !ls 功能,将当前文件夹内的所有文件赋予给指定列表接收,避免一个个文件名的复制粘贴过程。例如,假设当前文件夹中存在很多 csv 或其他格式的数据文件,用如下命令实现文件名的列表化还是比较方便的:

替代Xshell和Xftp功能

这个功能源于一个真实的场景:话说在某个临时集群环境中,由于种种原因不能使用 Xshell 和 Xftp 等类似工具直接操作集群内文件(使用 linux 服务器的应该都很熟悉这两个工具吧),但是开放了部分端口可供使用。在此种情况下,笔者自然联想到可通过部署 jupyter lab 服务来曲线达成目的。具体而言:

完成 jupyter lab 服务部署和启动后(在服务器端部署 jupyter lab 服务的具体流程可自行搜索),注意到在其 web UI 界面左侧的文件管理中提供了 upload 和 download 功能,这不刚好就是 xftp 的核心需求吗?

在 jupyter lab 的解释器选择界面,除了 notebook 和 console 之外,下面还提供了 terminal 功能,点进去就直接提供了服务器端的 shell 功能,巧了,这不就是一个 xshell 嘛!

以上,从某种角度讲,jupyter lab = ipython +  部分 conda + Xshell + Xftp,何其强大也!

☞95后大学生利用漏洞免费吃肯德基获刑;Linux内核初步支持苹果M1;Android Studio 4.2 发布|极客头条☞从“玩具”到“工具”,低代码能否完全替换纯代码?☞“跳过更新”还得付费?Docker 新变化引发群嘲

使用 Jupyter 近 2 年,发现了这 3 个实用技巧相关推荐

  1. 发现一款程序员实用小工具

    发现一款程序员实用小工具,用来解析 json 数据的! JSON Online Validator and Formatter - LINT JSON

  2. 打印pdf就一页_Excel表格打印技巧汇总,看完才发现,你连基础打印技巧都不知道...

    前天被老板削了一顿,说我打印的表格连标题行都没有! 昨天被老板削了两顿,说我打印的表格太浪费纸! 今天被老板削了五顿,说我表格打印出来的数据居然是错误! -- 在挨削了很多次之后,学会了一些技巧,终于 ...

  3. 听见丨苹果申请自主导航系统专利,自动驾驶汽车梦再近一步 现代打造更聪明、实用汽车AI语音系统

    浙江合众新能源宣布获知合出行12.5亿元注资,首款新车将于明年年中上市 昨天下午,浙江合众新能源宣布获知合出行12.5亿元注资并完成控股股东变更.合众新能源成立于2014年,由北京亿华通科技股份有限公 ...

  4. 电脑网络出问题怎么办?实用技巧!遇到打不开网页、无法上网的问题如何发现问题进行解决

    我们大家在生活当中和工作中使用电脑也是我们大家的日常工具了,对于有些特殊状况我们的电脑网络出问题了,无法打开网页.无法登陆QQ.无法上网应该怎么发现问题.如何解决?下面小编为大家分享一个实用的小技巧. ...

  5. jupyter notebook一些实用技巧

    先查找当前路径 %pwd 再定位至需要加载的文件路径 %cd I:\浏览器下载\<Python数据分析与挖掘实战>源数据和代码\Python数据分析与挖掘实战\chapter3\demo\ ...

  6. iOS 之如何利用 RunLoop 原理去监控卡顿?

    [CSDN 编者按]简单来说APP卡顿,就是FPS达不到60帧率,丢帧现象,就会卡顿,但是很多时候,我们只知道丢帧了,具体为什么丢帧,却不是很清楚,那么我们要怎么监控呢? 作者 | 枫叶无处漂泊    ...

  7. Excel直接转图片

    本文出自Simmy的个人blog:西米在线 http://simmyonline.com/archives/110.html 处理个用户的Excel 转Powerpoint的问题,发现了一些excel ...

  8. 如何在本地访问远程服务器的jupyter notebook?

    背景 jupyter notebook作为一个非常好用的工具,我们经常会在学习python以及深度学习的时候用到,但是经常我们面临的问题是远程服务器上的jupyter notebook,我们可能在本地 ...

  9. Anaconda中pytorch环境搭建(包括详细的虚拟环境创建,以及虚拟环境中jupyter notebook的使用)

    PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序. 2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch.它是一个 ...

最新文章

  1. Android应用性能优化
  2. Windows10下SSH远程拷贝文件
  3. 试用过期_过期的护肤品彩妆你都是怎么处理的呢?这样做,可以省一大笔钱
  4. java 方法 示例_Java语言环境getDisplayCountry()方法与示例
  5. android110 jni01
  6. 【python】range的用法
  7. scala类型参数的上界和下界
  8. ICLR'22 | 图机器学习最近都在研究什么?
  9. Ubuntu安装GitKraken
  10. Oracle 21版Database In-Memory LivaLabs实验(下)
  11. u3d_fw 框架使用
  12. linux局域网互传文件(使用scp)
  13. java ios push_java向IOS设备推送消息
  14. 计算机网络通信同步异步效率,同步传输和异步传输的区别及优缺点
  15. 关系的性质判断(自反,对称,传递)
  16. VSCode下的51单片机开发环境搭建
  17. 【DW推荐系统论文组队task1--NCF】
  18. flex布局之插件 超级好用
  19. 食物相克小知识http://www.best4c.com/loginForLink.do?domain=www.csdn.net
  20. 关于Solidworks提示VBE6EXT.OLB不能加载

热门文章

  1. Spring Cloud 服务消费者 rest+ribbon (二)
  2. Scrum立会报告+燃尽图(Final阶段第二次)
  3. LeetCode 33. Search in Rotated Sorted Array
  4. drawOval(int x,int y,int width,int height)函数
  5. 上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些?各有什么优缺点?...
  6. 如何录制回放测试用例并且添加检查点?
  7. 三菱fx3u通讯手册_三菱FX3U与变频器通讯程序如何编写
  8. python硬件编程_Python学习日记_《Python硬件编程实战》笔记_Mr_Ouyang
  9. Java基础总结--1
  10. 使用PyCharm快速安装TensorFlow