jupyter 常用记录

news2024/11/17 23:30:51

安装windows环境下

运行cmd 然后:在命令提示窗口输入pip install jupyter,然后回车;完成后运行 jupyter notebook

前言

提起jupyter notebook,应该很多学习过Python的同学都不陌生。虽然用jupyter notebook的同学相对较少,但是提及这款开发工具,很多人都会赞不绝口,“jupyter很强大,交互式、富文本”,很多人都知道jupyter notebook的这几个优点。

以Python开发为例,我们只需要在windows命令行或者linux/Mac终端输入“jupyter notebook”或者“ipython notebook”即可使用默认浏览器打开一个在线IDE,

首先说一下交互式,

jupyter notebook中一个非常重要的概念就是cell,每个cell能够单独进行运算,这样适合于代码调试。我们开发一个完整的脚本时变量会随着代码执行的结束而从内存中释放,如果我们想看中间的变量或者结构,我们只能通过断点或者输出日志信息的方式进行调试,这样无疑是非常繁琐的,如果一个程序运行很多这种方式还可行,如果运行时间长达几个小时,这样我们调试一圈耗费的时间就太长了。

而在jupyter notebook中我们可以把代码分隔到不同的cell里逐个进行调试,这样它会持续化变量的值,我们可以交互式的在不同cell里获取到我们想要测试的变量值和类型。

然后说一下富文本,

开发代码不仅是给机器去“阅读”,也需要让其他的同事、同学能够很容易的阅读,因此,注释就在开发过程中变的非常重要,一个完善的注释能够让周围人更加容易理解,协作效率也更高,避免重复性劳动。在大多数IDE中都可以进行注释,但是几乎都是相同的,只支持一些简单的文本格式注释,这显然是不够的,jupyter notebook支持Markdown编辑,它的cell不仅可以用于编码,还可以用于书写文本,Markdown可以轻松完成标题、数学公式等格式的编辑,更加有助于解释代码,适用于教学等场景。

最后在说一下轻量、触手可及,

开发过程中我经常需要测试一个小的代码块或者函数,这时候有两个选择:在IDE中新建一个测试脚本;打开命令行下的Python。我觉的这两个都不是好的选择,如果在项目下新建一个脚本后续还需要记住把它清理掉,如果写一个完善的测试脚本用于Alpha、beta测试这显然是低效不现实的。而选择在命令行下,界面不友好,操作不灵活,体验更差。

这时候就显现出jupyter notebook的优势,只需要输入jupyter notebook就会在流量器中打开一个网页,能轻量、快捷的进行开发验证,效率很好。此外,我们还可以通过搭建jupyter notebook服务使得它一直在服务器下运行来避免每次需要时都要在命令行下重复打开,我们只需要在浏览器打开对应的网页即可,这一点下文会详细介绍。

其实,除了这些我们耳熟能详的优点之外,jupyter还有很多令人惊叹的亮点:

  • 丰富的插件
  • 主题修改
  • 多语言支持

下面就针对这3点分别介绍一下,介绍下面3个功能的前提条件是已经通过下方命令成功安装jupyter notebook,

$ pip install jupyter notebook

丰富的插件

安装插件管理器

如果没有安装插件管理器,打开jupyter notebook后菜单栏只有如下3项,

  • Files
  • Running
  • Clusters

我们需要安装插件管理器来管理我们需要的插件,

第一步:用pip安装插件管理包,

$ pip install jupyter_contrib_nbextensions
$ pip install jupyter_nbextensions_configurator

第二步:安装一些插件并启用插件管理器,

$ jupyter nbextensions_configurator install --user
$ jupyter nbextensions_configurator enable --user

然后再次打开jupyter notebook会发现菜单栏多了一个选项Nbextensions,

记得勾选disable configuration for nbextensions without explicit compatibility (they may break your notebook environment, but can be useful to show for nbextension development),否则下方插件是不可选状态。

我们可以通过命令来管理开启或关闭某个插件,但是我觉得还是通过直接勾选我们需要的插件效率更高。

选择插件

我们从上面可以看出,jupyter notebook有很多插件,我们该用哪一个呢?我推荐5款个人认为不错的插件。

  • Table of Contents
  • Execute Time
  • Nofity
  • Codefolding
  • Hinterland

下面分别介绍一下它们的功能,

Table of Contents是一款自动生成目录的工具,它能够通过我们我们富文本中定义的标题自动生成目录,这样我们能够通过点击左侧目录快速定位到我们想要的到达的代码片段。

Execute Time顾名思义,执行时间,我觉得这是一款非常实用的插件,在企业项目开发中,效率是永远无法越过的一个门槛,和学术上理论效果足够优秀即可不同,在企业项目中对效率要求也很高,因此,我们需要统计代码的运行时间,其中最初级的用法就是在每个函数开始和结尾处写一个计时语句,这样比较繁琐。然后再高阶一些的用法就是通过装饰器写一些计时器,在每个函数上调用这个装饰器。其实,如果用jupyter notebook完全没必要这么麻烦。我们只需要打开Execute Time,它就能统计每个cell的运行耗费时间,结束时间等,非常详细,一目了然。

Nofity同样是一款非常实用的插件,当我们运行一个耗时较长的代码时,我们不可能一直盯着屏幕等待,但是我们又希望及时知道它运行结束了,Notify这款插件就可以实现这个功能,它能够在代码运行结束时发出通知,及时告知你代码运行结束了。

Codefolding是一款代码折叠工具,有时候我们写的一个函数非常长,但是我们又不关注 ,这样在阅读过程中会使得效率很低,代码折叠就是一个不错的选择,折叠我们不关注的代码块,Codefolding能够像其他IDE那样让你轻松自如的折叠代码块。

Hinterland是一款自动补全插件,称一个IDE“优秀”,如果没有自动补全显然是说不过去的。jupyter notebook自带补全功能,但是每次都需要点击tab键来补全,这样效率比较低,我们可以通过勾选Hinterland让jupyter notebook具备自动补全功能,当我们输入几个包含字母后它能够快速补全我们想要的函数,补全速度堪比pycharm。

主题修改

很多同学使用jupyter notebook都会觉得,这款开发工具界面太单调了,只有纯白色的主题,其实并不是这样,jupyter notebook也支持主题修改,而且非常方便。

首先在命令行下输入下面命令安装主题,

$ pip install jupyterthemes

jupyter notebook的主题管理工具叫做jt,我们可以通过下面命令查看可用主题,

$ jt -l
Available Themes:
   chesterish
   grade3
   gruvboxd
   gruvboxl
   monokai
   oceans16
   onedork
   solarizedd
   solarizedl

然后通过下面命令设置主题,

$ jt -t <theme_name>

其中theme_name为主题名称。

如果觉得不满意,想退回默认主题,可以通过下方命令实现,

$ jt -r

多语言支持

很多同学是因为Python而解除到jupyter notebook的,因此会认为这就是一款Python专属的开发工具,如果这样的话,那么也不足以我专门用一篇文章来介绍这款开发工具。

它更像是eclipse、IDEA、vscode,是一款综合的开发工具,它不仅支持Python,还支持C++、julia、R、ruby、Go、Scala、C#、Perl、PHP、Octave、Matlab、Lua、Tcl、等多种编程语言,功能十分强大,支持语言详情,请查看下方链接,

https://github.com/jupyter/jupyter/wiki/Jupyter-kernels​github.com/jupyter/jupyter/wiki/Jupyter-kernels

不同语言的配置方式各不相同,这里不再一一介绍,可以根据自己需要的语言自行在网上搜索相关配置资料进行配置。

jupyter notebook服务

如果非要找出使用jupyter notebook的缺点,我认为就是每次启动的时候相对繁琐,我们启动本地安装的IDE,一个命令或者点击一下图标即可,但是如果启动jupyter notebook就需要进入命令行或终端,输入“jupyter notebook”进行打开,如果使用的是虚拟环境,首先还要激活虚拟环境,这无疑是非常繁琐的,而且启动后它会占用一个终端或命令行窗口,如果意外关闭则会终止jupyter notebook服务。其实,这也是有解决方法的,我们搭建一个持续化的jupyter notebook服务,让它一直在服务器后台运行,这样既不占用窗口,也不需要繁琐的打开步骤,我们只需要把对应的URL收藏,每次需要时能够秒级速度打开,下面就来介绍一下jupyter notebook的搭建步骤。

第一步:获取sha1密码

在命令行下输入ipython,

In [1]: from IPython.lib import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:746cf729d33f:0af9cda409de9791f237a6c46c3c76a3237962fc'

导入passwd函数,调用后会让你输入密码,你可以设置一个明文密码,例如123,然后它会生成一个sha1密码串,这个很重要,后面会用到。

修改jupyter配置文件,linux系统配置文件路径为~/.jupyter/jupyter_notebook_config.py,windows系统配置文件路径为C:\Users\User\.jupyter\jupyter_notebook_config.py,如果没有这个文件,可以使用下面命令生成,

$ jupyter notebook --generate-config

这个配置文件很长,以linux为例,主要关注的是如下几项,

c.NotebookApp.ip = '*'  
c.NotebookApp.password = u'sha1:xxx:xxx' 
c.NotebookApp.open_browser = False 
c.NotebookApp.port = 8888
c.NotebookApp.enable_mathjax = True 

c.NotebookApp.ipc.NotebookApp.port,ip要和服务器保持一致,端口可以自行设定,不和其他端口冲突即可,后续访问时在浏览器输入ip:port即可。

c.NotebookApp.password就是前面生成的sha1密码串,复制过来即可。

c.NotebookApp.open_browser = False 的含义为是每次启动命令时是否打开浏览器,由于我们用的时候直接输入URL即可,所以这里不需要打开浏览器。

c.NotebookApp.enable_mathjax的含义为是否用mathjax,它是一种用于数学公式显示的工具,这里选True。

配置好这几项之后保存退出,输入下面命令即可启动,

$ nohup jupyter notebook > /dev/null 2>&1 &

nohup的含义是后台运行,这样就不用占用一个窗口来了。

配置好之后只要服务器不关机,jupyter notebook的服务会一直处于运行状态,我们随时可以使用,只需要打开ip:port即可。

Jupyter现如今已经成为Python开发中举足轻重的IDE,在数据分析等领域应用非常广泛。

尤其,随着Python逐渐在机器学习、数据分析、可视化、自动化办公等方面越来越广泛的应用,Jupyter会得到更多的重视。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/186040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java多级缓存是为了解决什么的?

前言 提到缓存&#xff0c;想必每一位软件工程师都不陌生&#xff0c;它是目前架构设计中提高性能最直接的方式。 缓存技术存在于应用场景的方方面面。从网站提高性能的角度分析&#xff0c;缓存可以放在浏览器&#xff0c;可以放在反向代理服务器&#xff0c;还可以放在应用…

使用JINJA2模板部署自定义文件(RH294)

在ansible中有许多模板可以用于修改现有的文件比如—— lineinfile和blockinfile但是&#xff01;我们还有一种更加便捷而且牛皮的方法为其构建模板在部署该文件是自动为受管主机自定义次模板配置文件而这些模板中非常有名的就是 JINJA2ansible将Jinja2模板系统用于模板文件 并…

Java设计模式-职责链模式Chain of Responsibility

介绍 职责链模式&#xff08;Chain of Responsibility Pattern&#xff09;, 又叫 责任链模式&#xff0c;为请求创建了一个接收者对象的链(简单示意图)。这种模式对请求的发送者和接收者进行解耦。职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理…

C语言#include的用法详解

#include叫做文件包含命令&#xff0c;用来引入对应的头文件&#xff08;.h文件&#xff09;。#include 也是C语言预处理命令的一种。#include 的处理过程很简单&#xff0c;就是将头文件的内容插入到该命令所在的位置&#xff0c;从而把头文件和当前源文件连接成一个源文件&am…

Oracle数据库故障处理-存储单块读hang分析处理

1 故障描述 2023年1月27日下午接到业务反馈数据库存在大量的锁表阻塞信息&#xff0c;并且业务的页面以及数据库的一些查询均处于阻塞状态&#xff0c;简单的查询sql也需要查询很长时间且未返回结果,数据库hang状态。 2 故障原因分析 2.1 数据库层面分析 接到业务反馈后&am…

如果放在几年前,无法想到互联网会蜕变成今天这样一副模样

如果放在几年前&#xff0c;你是万万无法想到互联网会蜕变成今天这样一副模样。尽管如此&#xff0c;这样一种蜕变却在真实地发生着。不知道你有没有发现就连前两年火爆的短视频人们都懒得刷了。所有的这一切都在告诉我们&#xff0c;互联网正在发生一场深刻而又彻底的嬗变。如…

SQL Server数据库版本总结

一、为什么要写这篇文章 之所以专门写一篇文章来整理归纳SQL Server各个版本的功能区别&#xff0c;是因为遇到过两次真实的客户案例&#xff0c;因为数据库版本选取不当&#xff0c;导致生产系统宕机的情况。 案例一 某客户安装了 32位 版本的SQL Server 2008 R2 数据库&…

人工智能轨道交通行业周刊-第31期(2023.1.16-1.29)

本期关键词&#xff1a;磁悬浮原理、小米石、通信铁塔维护、桥隧工巡检、地方铁路十大新闻 1 整理涉及公众号名单 1.1 行业类 RT轨道交通中关村轨道交通产业服务平台人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路…

element 日期组件实现只能选择小时或者只能选择小时、分钟

前言 在使用 element 框架时&#xff0c;总是会有一些满足不了现有项目需求的问题&#xff0c;这个时候就需要我们对 element 的组件进行改造&#xff0c;最近有一个需求就是要求日期组件只能选择年月日时&#xff0c;不要分钟和秒&#xff0c;找了一圈&#xff0c;发现 elemen…

【Markdown】CSDN 的 Markdown 编辑器锚点使用-进阶篇

1. 原始 Markdown 代码 1.1 “目录”元素 [TOC](8.6 InnoDB ClusterSet 的状态和拓扑)1.2 “1号标题-1”元素 # InnoDB ClusterSet 状态1.3 “1号标题-2”元素 <h1> <a id"innodb-clusterset-topology">InnoDB ClusterSet 拓扑</a> </h1>…

压缩包文件如何设置和删除密码

压缩软件除了可以压缩和解压文件&#xff0c;还可以作为加密软件&#xff0c;给压缩的文件设置密码来保护文件。 今天就来看下两个常用的压缩软件是如何设置和删除密码的。 先说说WinRAR这个最常用的压缩软件&#xff0c;它可以根据不同的需求设置单次密码和永久自动加密。 …

2023年度国家自然科学基金项目开放申报及注意事项

根据国家自然科学基金委员会发布的通告&#xff0c;2023年国家自然科学基金项目申报系统已于1月15日开放。知识人网整理了主要内容&#xff0c;提醒申报者注意。一、日程节点&#xff1a;1.集中接收工作于2023年3月1日开始&#xff0c;3月20日16时截止。2.申请人于2023年1月15日…

笔记本电脑拆机并更换固态硬盘的方法

本文介绍为笔记本电脑拆机、更换固态硬盘的具体方法。 在文章Win10电脑出现No Bootable Device且无法开机或开机后蓝屏无限重启的多个解决方法&#xff08;https://blog.csdn.net/zhebushibiaoshifu/article/details/122923896&#xff09;中我们提到&#xff0c;一些由电脑硬盘…

高频算法:删除有序数组中的重复项

今天要讲的算法题是LeetCode上的第26题&#xff0c;先贴题目&#xff1a; 首先题目中给出了几个比较关键的条件&#xff0c;首先就是升序排列的数组&#xff0c;这样的话至少我们不需要进行排序的操作&#xff0c;直接从前向后进行比较&#xff0c;我们就能知道数组中的哪些元…

基于SpringBoot、Mybatis-Generator实现数据库表自动生成全套后台代码

背景我们在日常开发过程&#xff0c;大多数都是使用主流MVC架构&#xff0c;如下图所示。从图中可以看出&#xff0c;我们主要的业务代码基本都是从Controller->Service->Dao/Mapper&#xff0c;由Dao/Mapper则通过Mybatis连接数据库连接池的方式与数据库进行指令数据交互…

实现简单的栈与队列

前言&#xff1a;前面已经详细地介绍了基本的顺序表和链表&#xff0c;这次要介绍的是数据结构中的栈与队列。从本质上来说&#xff0c;二者是特殊的线性表&#xff0c;是依赖于顺序表或链表来实现的&#xff0c;所以只要能够很好地掌握顺序表和链表&#xff0c;再了解清楚栈与…

STM32F103学习笔记(11)——压力传感器GZP6859D使用

一、简介 数据手册&#xff1a;https://item.szlcsc.com/3590436.html GZP6859D 型压力传感器采用 SOP6 封装形式&#xff0c;内部集成了高精度 ADC 芯片&#xff0c;对传感器芯片输出的偏移、灵敏度、温漂和非线性进行数字补偿&#xff0c;以供电电压为参考&#xff0c;产生一…

基于Java实现对Excel表格数据的读写(附B站详细讲解视频)

文章目录 Maven依赖设置导入相应jar包 读取.xlsx表格文件数据 写入数据到.xlsx表格文件 读写后缀名为.xls类型的表格文件&#xff08;旧版表格文件&#xff09; 详细视频教程 Maven依赖设置导入相应jar包 <project xmlns"http://maven.apache.org/POM/4.0.0" …

论文理解【Offline RL】——【One-step】Offline RL Without Off-Policy Evaluation

标题&#xff1a;Offline RL Without Off-Policy Evaluation文章链接&#xff1a;Offline RL Without Off-Policy Evaluation代码&#xff1a;davidbrandfonbrener/onestep-rl发表&#xff1a;NIPS 2021领域&#xff1a;离线强化学习&#xff08;offline/batch RL&#xff09;—…

【深度学习】知识蒸馏原理以及实践从0到1

文章目录前言1、知识蒸馏1.1 是什么&#xff1f;1.2 训练流程1.3 问题与挑战2、落地使用2.1 后续问题&#xff1a;总结前言 有没有什么方法可以在不扩展硬件的情况下利用这些强大但庞大的模型来训练最先进的模型&#xff1f;目前&#xff0c;有三种方法可以压缩神经网络&#…