Как выполнить одну строку в ячейке Jupyter Notebook или JupyterLab? - PullRequest
2 голосов
/ 05 июня 2019

Как в JupyterLab, так и в Jupyter Notebook вы можете выполнить ячейку, используя ctrl + Enter:

Код:

print('line 1')
print('line 2')
print('line 3')

Ячейка и выход:

cell and output

Но как вы можете запустить только line 2?Или даже выделение строк внутри ячейки без запуска всей ячейки?Конечно, вы можете просто вставить ячейку с этой единственной строкой или выделением строк, но это становится действительно громоздким и очень запутанным.Так есть ли лучшие способы сделать это?

1 Ответ

3 голосов
/ 05 июня 2019

Краткий ответ:

Блокнот Jupyter:

  1. qtconsole
  2. блокнотная

JupyterLab:

  1. qtconsole
  2. Run > Run Selected Text or Current Line in Console, опционально с сочетанием клавиш

Посмотрите детали ниже, а также некоторые особые случаи в редактировании в самом конце ответа.


Подробности:

Jupyter Notebook, вариант 1: qtconsole

Пожалуй, наиболее гибкой альтернативой вставке новой ячейки является открытие консоли IPython с помощью волшебной функции

%qtconsole

Для немного более необычной консоли вы можете использовать

%qtconsole --style vim

Результаты строк, выполненных в этой консоли, также будут доступны для ноутбука Jupyter, поскольку он все еще работает на том же ядре. Недостатком является то, что вам придется копировать и вставлять или вводить нужные строки в консоли.

[qtconsole[1]

Jupyter Notebook, вариант 2: Расширение ноутбука Scratchpad

При успешной установке вы можете запустить Scratchpad с ctrl + B:

enter image description here

JupyterLab, опция 1: %qtconsole

Работает так же, как для ноутбука

JupyterLab, опция 2: Run > Run Selected Text or Current Line in Console

Опция, похожая на qtconsole, но, возможно, более элегантная, была встроена для более новых версий JupyterLab. Теперь вы можете поместить свой маркер в одну строку или выделить выделение и использовать опцию меню Run > Run Selected Text or Current Line in Console:

enter image description here

Вы по-прежнему будете получать результаты в консоли IPython, но вам не нужно добавлять дополнительную строку с помощью %qtconsole, и намного проще запустить выделение строк в ячейке:

enter image description here

Вы можете сделать вещи еще проще, назначив сочетание клавиш в пункт меню Run > Run Selected Text or Current Line in Console вот так:

1 - Перейдите на Settings и выберите Advanced Settings editor:

2 - В поле Settings tab выполните ctrl+F поиск run-in-console, чтобы найти следующий раздел:

// [missing schema title]
    // [missing schema description]
    "notebook:run-in-console": {
      "command": "notebook:run-in-console",
      "keys": [
        ""
      ],
      "selector": ".jp-Notebook.jp-mod-editMode",
      "title": "Run In Console",
      "category": "Notebook Cell Operations"
    }

3 - Скопируйте эту часть и вставьте ее под User Overrides и введите желаемый ярлык ниже keys примерно так:

[...]
"keys": [
  "F9"
],
[...]

4 - Нажмите Save All под File.

5 - Если процесс прошел гладко, вы увидите, что ваш пункт меню изменился:

enter image description here

6 - Возможно, вам придется перезапустить JupyterLab, но теперь вы можете легко запустить одну строку или выбор строк с нужным вам ярлыком.

РЕДАКТИРОВАТЬ: Особые случаи

Ваш предпочтительный подход будет зависеть от характера вывода рассматриваемых строк. Ниже приведен пример с plotly . Возможно, со временем будут добавлены другие примеры.

1. - сюжет

графические изображения не будут отображаться непосредственно в Jupyter QtConsole (возможно, это связано с this ), но как Scratchpad в Jupyter Notebook, так и встроенная консоль в Juphyterlab, использующая Run > Run Selected Text or Current Line in Console, будут обрабатывать только графические изображения хорошо.

Отрывок:

from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import plotly.graph_objs as go
init_notebook_mode(connected=True)

trace0 = go.Scatter(
    x=[1, 2, 3, 4],
    y=[10, 15, 13, 17]
)

fig = go.Figure([trace0])
iplot(fig)

1.1 - сюжет с блокнотом

enter image description here

1.2 - график с консолью JupyterLab с использованием выделенной строки и сочетания клавиш:

enter image description here

...