Загружается ли расширение сервера Jupyter при использовании Jupyterhub

Я написал расширение для сервера Jupyter. Когда я настроил его на использование jupyter serverextension enable --py my_module и запустил Jupyter Notebook с jupyter notebook, расширение работало хорошо. Но когда я настроил его таким же образом, а затем запустил Jupyter с помощью jupyterhub, расширение сервера не загружалось. Есть ли кто-нибудь, кто хорошо разбирается в настройке jupyterhub, пожалуйста?


person flyingrose    schedule 23.01.2018    source источник
comment
как у вас настроен jupyerhub? какой спавнер используете?   -  person Louise Davies    schedule 29.01.2018
comment
Что вы имеете в виду под словом "спаунер"? Я имею в виду, что я написал расширение Jupyter Server, подобное этой ссылка. И это хорошо работает, когда я использовал jupyter notebook. Но как я могу позволить этому расширению работать, когда я использую jupyterhub-singleuser? Можно ли открыть какие-либо параметры конфигурации?   -  person flyingrose    schedule 04.02.2018
comment
Под генератором я имел в виду процесс, с помощью которого JupyterHub генерирует новые jupyter серверы (github.com/jupyterhub/jupyterhub /wiki/Спаунеры). Поскольку вы упомянули jupyterhub-singleuser, я предполагаю, что вы используете DockerSpawner.   -  person Louise Davies    schedule 05.02.2018


Ответы (1)


Если вы используете DockerSpawner, это означает, что ваш Jupyterhub сервер создает новый контейнер для каждого пользователя и устанавливает блокнот из царапина в этом контейнере. Вот почему ваше расширение не запускается: на вашем обычном notebook сервере расширение установлено, но на notebook серверах в контейнерах Docker ваше расширение не установлено, так как вы используете образ jupyterhub/singleuser по умолчанию.

Вам нужно будет создать собственный образ 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 (после создания образа Docker путем запуска docker build) в файле jupyterhub_config.py следующим образом:

c.DockerSpawner.image = 'yourrespository/yourimage'
person Louise Davies    schedule 05.02.2018
comment
Большое спасибо! Но написать настраиваемый файл Dockerfile довольно сложно, поскольку в моем расширении есть и внешний, и внутренний интерфейс. Есть ли другие удобные подходы? - person flyingrose; 06.02.2018
comment
Это не так уж много усилий, просто требует, чтобы вы написали шаги процесса установки. Если вы хотите использовать Docker, это единственное решение. Я не пробовал, но есть systemdspawner, который порождает процессы локально, но по-прежнему обеспечивает инкапсуляцию пользователя, но я не знаю, соответствует ли общесистемная установка расширения всем ноутбукам с этим расширением. Однако стоит попробовать, если вы можете переключиться с Docker. - person Louise Davies; 06.02.2018