jupyter notebook是交互式的Python运行环境,可以把它看做是一张草稿纸,你可以通过它来进行你的思考探索过程,交互式的进行,每一步都能看到结果,也很方便查看之前的结果。它是使用Python或者R做科学计算和数据分析的利器。前几天有小伙伴问我怎么在jupyter上添加已经创建的Python虚拟环境,为此我也去查了一些资料,很多资料都只是粗略的介绍怎么安装和使用它。最终还是通过google和自己摸索弄出来了。
我使用的是anaconda,使用它可以让我们大大减少与Python 一些第三方库安装配置环境进行斗争,比如在windows平台安装lxml,如果直接使用pip进行安装,估计不折腾半天到一天,都不能顺利安装上。使用anaconda,你可以把这些时间拿来做更有意义的事情。使用anaconda的话,安装第三方库优先使用conda install xxx
,如果提示找不到包,然后再使用pip install xxx
,如果pip安装失败,则查看它的报错信息,能用conda install
安装的依赖先用这种方式安装,最后用pip install
安装。实在还不行,那么在这里下载.whl文件进行安装。如果还是不行,那么就只有google或者阅读官方文档了,自求多福!
上面说了这么多,其实一句话,就是推荐大家使用anaconda。anaconda自带了jupyter notebook。如果是不是使用的anaconda,那么可以通过
pip install jupyter
安装jupyter notebook.安装好过后,在命令终端输入jupyter notebook
,那么在浏览器中访问http://localhost:8888/
,就可以看到如下界面
可以看到我这里的运行环境是Python2和Python3,那么怎么添加其它环境呢?先使用conda info -e
查看我已有的虚拟环境
现在我想在jupyter中使用名为mjpy27这个内核,怎么办呢?其实jupyter的ipykernel是使用一个叫kernel.json的文件管理的,mac os 或者linux平台可以通过
find . -name "kernel.json"
找到该文件的位置。如下图所示
从图中我们可以看到差不多有三种类型的位置,要修改哪个位置的json文件才管用呢?眼尖的同学可以看到./Library/Jupyter/kernels/python*/kernel.json
这类位置有三个json文件,经过实验发现需要在在./Library/Jupyter/kernels/
目录下手动创建一个文件夹,然后创建一个名为kernel.json
的文件,让该文件和已有的虚拟环境相关联,即可使用该虚拟环境。该json文件的内容大概如此:
{
"display_name": "mjpy27",
"language": "python",
"argv": [
"/Users/resolvewang/anaconda3/envs/mjpy27/bin/python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
]
}
再看看我们jupyter中的解释器内核,可以看到mjpy27被添加进去了。
Linux中设置方法大致和mac上相同。windows中的话,kernel.json文件的位置位于
C:\Users\Administrator\AppData\Roaming\jupyter\kernels\python*\kernel.json
目录下,需要多个虚拟环境,就手动创建多个python文件夹和kernel.json*文件。
上面是从最通用的方法,其实有更加简单的方法。如果你不想手动修改kernel.json文件的话,可以直接为你想要的环境安装ipykernel包。即:
conda install -n py27 ipykernel
然后激活这个环境,输入
python -m ipykernel install --user
这样就可以在jupyter中使用py27这个环境了。
如果所需版本并不是已有的环境,可以直接在创建环境时便为其预装ipykernel。
conda create -n py27 python=2.7 ipykernel
不过这两种方式,只能为Jupyter安装一个Python2和一个Python3的环境。从上面过程可以看到,我们手动生成kernel.json
的时候,可能会创建多个python*
(或者其他名字)的文件夹,但是使用上述命令(conda/pip install ipykernel
)快捷创建的时候它不会生成除了python2
和python3
以外的文件夹,所以最多只能创建两个虚拟环境。
除此之外,jupyter notebook还可以远程运行,为了安全,你可以在远程访问的时候为jupyter设置一个密码,这里就不多讲了,因为网上很多资料都写了,有兴趣的可以google一下。