Jupyter notebook基于浏览器,提供了一种比ipython更方便的程序编写和测试环境。同时包括Markdown格式的文本编辑功能。对于记录原始数据处理很有帮助。如果你们课题组有一个远程服务器,你希望利用远程服务器的强大计算能力,或者数据不方便下载到本地,同时你又想利用Jupyter notebook的功能,下面提供了一种思路:
- 生成默认配置文件
jupyter notebook --generate-config
- 生成访问密码
终端输入ipython
,设置你自己的jupyter访问密码,注意复制输出的sha1:xxxxxxxx
密码串。
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:xxxxxxxxxxxxxxxxx'
- 修改
vim ~/.jupyter/jupyter_notebook_config.py
中对应行如下:
c.NotebookApp.ip='*' #设置所有ip地址皆可访问
c.NotebookApp.password = u'sha:ce...刚才复制的那个密文'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #可自行指定一个端口, 访问时使用该端口
- 在服务器上启动
jupyter notebook
- 命令行界面显示的地址到本地浏览器中
to login with a token下面一行的http://localhost:8888/?token=xxxxxxxx
以上方法可能不成功,浏览器显示无法访问界面。下面给出解决办法:
cmd
打开本地终端,将本地的8888端口与远程服务器的8888端口联系起来
ssh -f username@serverIP -N -L 8888:localhost:8888
其中: -N 告诉SSH没有命令要被远程执行; -f 告诉SSH在后台执行; -L 是指定port forwarding的配置,远端端口是8888,本地的端口号的8888。
以上就能正常打开远程服务器上的jupyter notebook了。接下来要新建虚拟环境及相应的kernel。
- 先创建名为yourownname的环境
conda create -n yourownname python=3
- 下面开始添加kernel,首先切换到需要配置的环境
conda activate yourownname
- 安装
ipykernel
,注意这里一定要用conda安装,血与泪的教训,否则用pip安装会导致jupyter notebook里面import包的路径与命令行中conda install package
的路径不一样(很不好改,我网上找了好久的办法,更改kernel.json的路径后,会导致kernel准备失败)
conda install ipykernel
- 手动添加这一kernel
python -m ipykernel install --user --name yourownname --display-name "yourownname"
--name
被用于jupyter内部,这一命令将覆盖具有相同名称的kernel--display-name
指定jupyter notebook中显示的名字
其他:可以使用命令jupyter kernelspec list
查看当前所有可用的kernel;删除不再需要的 kernel:jupyter kernelspec uninstall kernel_name