我写了一个Jupyter servertextension。当我配置它使用jupyter serverextension enable --py my_module
并使用jupyter notebook
启动Jupyter Notebook时,扩展程序运行良好。但是当我以相同的方式配置它然后使用jupyterhub
启动Jupyter时,不会加载serverextension。请问有关jupyterhub配置的人吗?
答案 0 :(得分:1)
如果您使用DockerSpawner,则表示您的Jupyterhub
服务器为每个用户创建一个新容器,并从头开始在该容器中安装笔记本。这就是您的扩展程序未运行的原因 - 您的常规notebook
服务器已安装扩展程序,但Docker容器中的notebook
服务器尚未安装您的扩展程序,因为您使用的是默认jupyterhub/singleuser
服务器1}}图片。
您必须创建一个自定义Docker镜像,JupyterHub
服务器将使用该镜像来创建notebook
服务器。这是一个简单的Dockerfile示例,向您展示基础知识:
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
显然用相关名称替换“您的扩展名”的引用。我们在这里所做的只是继承jupyterhub/singleuser
图像并复制并安装扩展。然后,在JupyterHub
配置中,在docker build
文件中指定Docker镜像(在运行jupyterhub_config.py
之后构建泊坞窗图像之后),如下所示:
c.DockerSpawner.image = 'yourrespository/yourimage'