Jupyter Notebook之初识及入门

为什么要用IPython/Jupyter?

python里面调试确实有点烦恼,尤其是在vim里,想要尝试一些简单的编码问题,实在是有点麻烦,不想到命令行模式一行一行执行,也不想再新建一个文件测试一个简单的功能。

而且就是不管这些,测试一个简单的功能如学习语法、测试编码、测试新学习的包等,在IDE里面测试,看不到每个部分的output效果(除非自己手动去命令行里复制或截屏),在命令行里测试,则没法轻松撤销前面的代码。。。。
所以这时候才想到好像前阵子看到youtube视频里别人用IPython,是那种又能轻松编辑又能为每部分显示output效果,还能在旁做markdown笔记的东西。
出于这个想法,搜到了这篇知乎回答,看到了不少有意思的东西,感觉又展开了一个崭新的领域,python的视界豁然开朗。
这篇文章极好的解释了IPython的入门用法,相当酷!我怎么竟然这么久都不知道这种东西的存在?

IPython和Jupyter的区别?

据说一开始IPython是作为IPython shell的存在,后来Jupyter融合了它,又把自己和IPython上独立出来,做成了网页版的Jupyter Notebook这样的东西。Jupyter强大的特性,加上和各种数据研究库的紧密结合,真让人不能忽视它的存在了。
IPython的安装方法,简单地pip install ipython即可。
但是,想到IPython本身一个shell,让我想起了我自己用的shell是zsh,让我把zsh切换到别的shell里面去,还真有点不喜欢。。这可能是个stylish issue吧。
所以,应该直接了当的安装jupyter,其中也会自动安装上IPython shell,作为其运行的Kernel。

错误的安装Jupyter

~只安装Jupyter本身的话,很简单:python -m pip install jupyter。不过根据官方文档,强烈建议安装Jupyter的Anaconda发行版,像大礼包一样的自动安装python+Jupyter Notebook+一系列数据研究库。因为本来就是要研究机器学习等一系列数据研究的,所以Anaconda正合适。这个我觉得再好不过了,所以直接跳到Anaconda页面去看安装方法。然后看到,Anaconda安装方法是不能简单apt-getbrewpip install的,500M左右的大小,需要下载后启动图形安装工具或shell脚本安装(.sh文件本身就500M,而且安装分为Python 3和Python 2的两种方式。~

然后就会发现:Anaconda谁装谁后悔!
Anaconda体积庞大,软件管理看起来一体化简单,实际上在处理一些Bug和自定义设置的情况下非常不好定位。我在Mac上初次安装Anaconda大礼包后,连简单的jupyter notebooke这样的命令都执行不了,详尽了办法最后才用直接指定路径的方式运行。这只是一开始,之后还有notebook里各种找不到外部安装的python package的情况。
所以还是别图便宜,手动安装一步一步来吧。一键安装很多时候都没那么好。
试了下手动安装的方法,pip install jupyter,或者官方的python -m pip install jupyter,都会发生jupyter: command not found找不到命令。参考了数十篇网络上中英文文章,都没有解决。常说的直接引用~/.local/bin这个位置的 jupyter也不行(没有)。
终于,意识到这些方法都是错误的思路。

正确的安装Jupyter Notebook

不管官网怎么推荐Anaconda,网络上各种简单解说,总之Anaconda或pip install jupyter都很容易引发巨大的问题。由于jupyter的性质:它是调用python内核的东西,用系统python还是用自己的python,这都是很敏感很麻烦的问题。用系统的python很容易识别不到或者被别的程序修改导致bug,用自己的python会导致别的地方安装的package在jupyter里识别不了。
所以:
参考了这篇的思路,正确的方法是在virtualenv虚拟环境下,绝对安全封闭的环境下用pip安装jupyter。这样的话,第一,不需要sudo pip这样敏感的东西去安装jupyter这么复杂的工具;第二,也保证了jupyter不会搞乱其它东西。
然后,二话不说,在已有virtualenv的情况下,在某个文件夹里建立虚拟环境,并启动虚拟环境。然后简单一句pip install jupyter,完成安装。
安装完成后jupyter notebook,完美运行!

# for Python2
$ pip install jupyter

# for Python3
$ pip3 install jupyter

这样的话,即使以后要在jupyter里各种安装插件、各种配置新kernel等,都不用害怕了,因为再怎么玩弄,也出不去这个圈。
话说回来,实际上你也没什么需要在全系统配置jupyter的必要,在某个文件夹玩就足够足够的了。
何必呢?

启动Jupyter

用命令行启动很简单,在某个工作目录,输入:

$ jupyter notebook

这样就能以这个目录打开一个http://localhost:8889/tree的网页,一切都在这个网页里操作。

正确的启动Jupyter

正确的方式,实际上是在Virtualenv虚拟环境下启动,可以随意安装各种包,适配各种Python版本环境:

# 启动Virtualenv
$ source ~/PATH-TO-VENV/activate 

# 启动Jupyter
(venv)$ jupyter notebook

添加Python3 Kernel

参考:Jupyter增加内核

默认的只有Python2 Kernel,所以只能建立Python2的笔记。
要添加也很简单。
强烈建议在Python3的Virtualenv虚拟环境下实现!!!

# 启动Virtualenv
$ source ~/PATH-TO-VENV/activate 

# 在Python3的虚拟环境下安装Kernel
(venv3)$ pip3 install ipykernel

# 将Kernel添加进Jupyter笔记选项中
(venv3)$ python -m ipykernel install

启动Jupyter notebook后,就会看到Kernel里面多了Python3了:
image

终端里找不到jupyter命令

总是报command not found jupyter错误,说没有这个命令。一开始还以为是zsh的问题,可是切换到bash也一样。
照着网上攻略在.zshrc里改也没用,在.bash_profile里改也没用。
然后发现,在Mac自带的Terminal.app中就可以正常打开,不需要改任何配置。
这才知道原来是iTerm2无法识别。于是在Terminal.app中用which命令查看jupyter命令的所在处,看到它位于/Users/我的用户名/anaconda2/bin/jupyter这个地方。
于是直接在~/.zshrc中加入alias:

$ alias jupyter="/Users/我的用户名/anaconda2/bin/jupyter"

重启iTerm2,好用!

但是,iTerm2中的bash还是不能访问,用同样的方法也不行。暂时没找到解决方法。


Solomon's 技术专栏
主要收录自己的一些技术文章

Those who exalt themselves will be humbled, and those who humble themselves will be exalted.

1.2k 声望
475 粉丝
0 条评论
推荐阅读
Mac上的gdb之:从入门到放弃
副标题:Mac上的gdb无法正常调试的问题 Mac上用brew install gdb安装gdb后,无法正常的运行run命令,报错如下: {代码...} 这个不是c程序的问题,也不是gdb的问题,而是Mac的问题。 参考:gdb doesn't work on ma...

SolomonXie6阅读 10.4k

Vue 实现人机五子棋
预览效果github源码核心代码 {代码...} 原文地址:[链接]

jigsaw4阅读 3.2k

Light·技术公益创造营,开营了!
第三届腾讯Light·技术公益创造营(简称“腾讯Light”),围绕数字时代下“未成年人心理健康”、“老年人用网安全”、“生物多样性保护”三大议题,号召社会各界人士打造技术公益多元解决方案,以共同解决更多的社会公共议...

SegmentFault思否2阅读 4.5k

python里打印list的四种方法
原文链接标题:Print lists in Python (4 Different Ways)用for循环来打印 {代码...} 结果1 2 3 4 5用 * 星号来打印 {代码...} 结果 {代码...} 把list转换为str来打印 {代码...} 结果 {代码...} 用map把数组里非...

chiiinnn阅读 10.4k

封面图
2022 星策 Summit 峰会首批嘉宾确认,火热报名中!
Start Together, Star Together ,一起开始,一起闪耀!星策社区年度最大峰会来 啦!2022 星策 Summit 是由星策开源社区主办、思否社区协办,面向企业管理层、CTO、CEO、AI 工程师、开发者的线上直播活动。本次...

MissD阅读 9.7k

Ubuntu20.04 从源代码编译安装 python3.10
Ubuntu 22.04 Release DateUbuntu 22.04 Jammy Jellyfish is scheduled for release on April 21, 2022If you’re ready to use Ubuntu 22.04 Jammy Jellyfish, you can either upgrade your current Ubuntu syste...

ponponon1阅读 4k评论 1

「2022 中国开源创新大赛」报名进入倒计时!还没上车的小伙伴抓紧时间啦
2022 年中国开源创新大赛,是在中央网信办指导下,由中国互联网发展基金会、中国网络空间研究院、中国互联网投资基金联合主办,北京长风信息技术产业联盟承办。

MissD阅读 6.5k

封面图

Those who exalt themselves will be humbled, and those who humble themselves will be exalted.

1.2k 声望
475 粉丝
宣传栏