使用Jupyterhub时​​是否加载了Jupyter serverextension

Is Jupyter serverextension loaded when using Jupyterhub

我写了一个 Jupyter servertextension。当我使用 jupyter serverextension enable --py my_module 配置它并使用 jupyter notebook 启动 Jupyter Notebook 时,扩展运行良好。但是当我以相同的方式配置它然后使用 jupyterhub 启动 Jupyter 时,将不会加载 serverextension。请问有懂jupyterhub配置的吗?

如果您使用 DockerSpawner,这意味着您的 Jupyterhub 服务器会为每个用户创建一个新容器,并在该容器中从头开始安装笔记本。这就是为什么您的扩展没有 运行 - 您的常规 notebook 服务器安装了扩展,但是 Docker 容器中的 notebook 服务器还没有安装您的扩展,因为您正在使用默认 jupyterhub/singleuser 图片。

您将必须创建一个自定义 Docker 图像,您 JupyterHub 服务器将使用该图像来创建您的 notebook 服务器。这是一个简单的示例 Docker 文件,向您展示基础知识:

FROM jupyterhub/singleuser

USER root

COPY /path/to/YourExtension-1.0.tar.gz /home/jovyan/work
RUN pip install YourExtension-1.0.tar.gz
RUN jupyter serverextension enable --py your_extension --sys-prefix    
RUN rm YourExtension-1.0.tar.gz

显然用相关名称替换对 "your extension" 的引用。我们在这里所做的就是从 jupyterhub/singleuser 图像继承并复制并安装扩展。然后,在你的 JupyterHub 配置中,在你的 jupyterhub_config.py 文件中指定你的 Docker 图像(在 运行ning docker build 构建你的 docker 图像之后)像这样:

c.DockerSpawner.image = 'yourrespository/yourimage'