如何在 JupyterHub 中切换Kernel

Jupyter是目前生物信息和机器学习领域经常使用的执行环境。其交互式的运行模式,提供了非常便捷的使用体验。但是Python 的大版本之间语法差异较大(主要指Python2.7Python3.6),以及部分用户需要使用其他的执行环境(如 Rscala等),因此在使用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或其他系统上的可执行程序能正常运行。

Powered by XTAO TechnologyLast Modified On:2021 2023-03-24 09:05:16

results matching ""

    No results matching ""