如何在 JupyterHub 中切换Kernel
Jupyter是目前生物信息和机器学习领域经常使用的执行环境。其交互式的运行模式,提供了非常便捷的使用体验。但是Python 的大版本之间语法差异较大(主要指Python2.7
和Python3.6
),以及部分用户需要使用其他的执行环境(如 R
或 scala
等),因此在使用Jupyter时,有需要对kernel进行指定的需求。本文意在介绍在Achelous 平台上如何添加Kernel。以方便广大用户使用。
第一步:基础镜像获取
用户可通过xtaohub中提供的jupyterhub 镜像作为基础镜像来执行以下操作。
docker pull achelous.org:8280/servers/jupyterhub:latest
docker run -it --entrypoint="/bin/bash" jupyterhub:latest
用户即可进入镜像进行修改。
[!NOTE|style:flat] 在基础jupyterhub镜像中,其默认的kernel为Python3.7 。
第二步:安装Python2 相关扩展包
以Python2.7 为例,用户需要先安装 pip2
来安装相关扩展。
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python2 get-pip.py
pip2 install -U ipykernel
该步骤安装的ipykernel
,为交互所需依赖包,用户也可以根据自己开发方向进行适当的切换。
第三步:编写配置文件
在镜像中,Jupyter Kernel相关配置在 /usr/local/share/jupyter/kernels/
中存放,在新建Kernel 时需要先创建子目录。
mkdir /usr/local/share/jupyter/kernels/python2/
touch /usr/local/share/jupyter/kernels/python2/kernel.json
在kernel.json
文件中编辑以下内容
{
"argv": [
"/usr/bin/python2.7", //指定执行程序所在位置
"-m",
"ipykernel_launcher", // 指定需要加载扩展
"-f",
"{connection_file}"
],
"display_name": "Python 2 (ipykernel)", // 前端显示的Kernel 名称
"language": "python",
"metadata": {
"debugger": true
}
}
退出后保存容器
docker commit <container-id> <registry>/jupyterhub:your-tag
docker push <registry>/jupyterhub:<your-tag>
注意 <container-id>
、<registry>
和<your-tag>
需要根据实际情况进行替换。
启动服务
用户可通过Poros界面启动Jupyterhub 服务。用户登录后,可以通过Web界面进行Kernel的切换。
注意事项
如果用户需要指定其自身的扩展包所存在的路径,可以通过在Jupyter内执行以下命令达成:
import sys
sys.path.append('/your/script/path')
对于R这类版本更新比较频繁或Python小版本(如Python3.5),建议在容器内进行安装后更新镜像。基础镜像为Ubuntu
系统,因此不保证CentOS
或其他系统上的可执行程序能正常运行。