Как сделать Jupyter Terminal полностью функциональным? - PullRequest
0 голосов
/ 02 мая 2020

Приложение Jupyter Lab имеет отличные Терминалы с терминальной оболочкой в ​​браузере, которая поддерживает цвета, клавиши навигации и практически все стандартные функции терминального приложения. В этом вопросе я имею в виду приложение /lab, а не приложение classi c Notebook (/tree).

Если я запускаю сервер Jupyter с использованием этого Docker образа, он прекрасно работает. Мне нужно создать свой собственный имидж, и желательно не на этом. Я делаю это просто как задокументировано:

docker run -it --rm -p 8888:8888 -v "$PWD":/jupyter python:3.8 bash
# pip install jupyterlab
# jupyter lab --config=/jupyter/jupyter_notebook_config.py

Выше предполагается, что у меня есть jupyter_notebook_config.py в текущем каталоге:

c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.port = 8888
c.NotebookApp.password = 'sha1:<salt>:<hash>'
c.NotebookApp.allow_password_change = False
c.NotebookApp.allow_root = True
c.NotebookApp.open_browser = False

Все работает, но терминал работает очень плохо, это не поддерживает цвета и отправляет коды (например, ^[[A, ^[[B) вместо клавиш со стрелками. Пошаговое расследование Dockerfile - не столь увлекательное занятие, может быть, кто-нибудь подскажет мне, о чем я пишу?

РЕДАКТИРОВАТЬ : я был маленьким немного ошибочен в отношении цветов (был смущен зеленой подсказкой по умолчанию на изображении jupyter/base-notebook) и общим описанием проблемы. Причина root состояла в том, что оболочка, которая запускается в моем образе, имеет значение sh, тогда как в официальном образе это bash. Но, тем не менее, Терминал не полностью функционален, например, если я запускаю nano, он запускается только в области 80x25 символов и не растягивается до фактического размера терминала). Хотя стрелки работают в нано.

1 Ответ

0 голосов
/ 02 мая 2020

Итак, я выяснил причину. Очевидно, веб-приложение Terminal просто воспроизводит поведение оболочки по умолчанию пользователя, под которым запускается Jupyter. На этом изображении они активируют раскраску в шаблоне .bashr c, а затем создают нового пользователя, указывая для него оболочку (строки 52 и 59 ).

РЕДАКТИРОВАТЬ: также SHELL=/bin/bash должны быть установлены в окружающей среде.

...