Возможно ли связать интерактивное окно python с запущенным ядром jupyter notebook?

#python #visual-studio-code #jupyter-notebook

#python #visual-studio-code #jupyter-notebook

Вопрос:

Мне нравится новая функциональность в VS code для подключения к удаленному серверу jupter notebook. Это позволяет мне запускать jupyter в контейнере docker и запускать код…

Однако при построении таблиц pandas и т.д. вывод текста не всегда оптимален, и для быстрой итерации было бы здорово иметь, например. доступны интерактивные графики bokeh.

Итак, я подумал о следующем — можно ли запустить jupyter notebook и после этого подключить VS Code к соответствующему ядру. В принципе, таким же образом вы также можете подключить существующее ядро для запущенного ноутбука.

то, как я могу это сделать сейчас:

  1. запустите сервер jupyter notebook
  2. запустите новый notebook
  3. в записной книжке выполните следующую волшебную команду %connect_info
  4. это возвращает бит json и некоторые инструкции — просто скопируйте json
  5. в другой оболочке bash я могу записать этот json в файл с именем my_kernel.json и выполнить jupyter console --existing my_kernel.json

теперь мой ноутбук находится в моем браузере, а моя консоль подключается к одному и тому же ядру. Таким образом, любая переменная, доступная в моем браузере, также доступна в моей консоли (и наоборот).

Возможно ли что-то вроде выполнения шага 5 в VSCode для… Я хотел бы отправить код из окна моего редактора в мою интерактивную консоль python и получить доступ к тому же ядру из моего ноутбука…

Комментарии:

1. Привет, Джеффри. Я разработчик в команде расширения VSCode Python. Вы не возражаете, если я задам уточняющий вопрос, просто чтобы убедиться, что я понимаю ваш сценарий. Вы упомянули о необходимости подключить это через консоль и получить вывод только текста. Если вы хотите более насыщенный вывод, вы должны иметь возможность использовать интерактивное окно, которое мы создаем, чтобы видеть насыщенный вывод с удаленного сервера. Причина, по которой вы используете консоль для подключения, заключается в том, что вам нужно что-то вроде —existing для удаленного подключения к интерактивному окну?

2. Позвольте мне попытаться уточнить… Моя конечная цель — подключить интерактивное окно в vs code и notebook в браузере к одному и тому же ядру (запущенному в контейнере docker). Причина этого в том, что интерактивное окно отлично подходит для вывода результатов по ячейкам, но в нем по-прежнему отсутствуют некоторые интерактивные функции, к которым я привык (например, графики боке, красиво оформленные фреймы данных, завершение кода в интерактивном окне — например. С помощью фрейма данных найдите некоторые имена столбцов). Теперь я более или менее могу получить желаемый результат, запустив сервер notebook в моем контейнере docker, прикрепив

3. VS code для этого контейнера через расширение docker таким образом, чтобы он выполнялся в моем терминале. Запустите консоль jupyter —extend в этом терминале и позвольте Ctrl shift отправить мой выбор / текущую строку в моем редакторе на мой терминал .. но я хотел бы иметь опцию интерактивного окна

4. Идеальный. Это то, о чем я догадывался, но я хотел быть уверенным. В настоящее время мы это не поддерживаем, но я открою проблему, чтобы отследить ее. Мне кажется, что это сценарий, который было бы неплохо поддерживать.

5. Потрясающе…… Могу ли я где-нибудь повысить его?

Ответ №1:

В настоящее время это не поддерживается. Мы поддерживали подключение к удаленному серверу, но на этом удаленном сервере мы запускаем новый документ без названия, который мы используем. В настоящее время у нас нет способа подключиться к уже запущенному ядру.

Я создал эту проблему, чтобы отследить ее здесь, если вы хотите отследить / проголосовать: https://github.com/Microsoft/vscode-python/issues/4644

Ответ №2:

Возможно, вы можете сделать это другим способом:

  1. Запустите ядро с помощью VS code, подключившись к удаленному серверу Jupyter, как описано здесь.

  2. Запустите другой Jupyter notebook и подключите его к существующему ядру (запущенному VS code) с помощью extipy.