如何在Jupyter Notebook或JupyterLab单元中执行单行或所选代码?

ves*_*and 4 python jupyter jupyter-notebook jupyter-lab

在JupyterLab和Jupyter Notebook中,您都可以使用ctrl + Enter以下命令执行单元:

码:

print('line 1')
print('line 2')
print('line 3')
Run Code Online (Sandbox Code Playgroud)

单元格和输出:

单元和输出

但是,你怎么能运行 line 2?甚至在不运行整个单元的情况下选择单元中的线?当然,您可以只插入带有单行或选择的行的单元格,但这确实非常麻烦并且很快。那么,有没有更好的方法可以做到这一点?

ves*_*and 5

简短答案:

Jupyter笔记本:

  1. qtconsole
  2. 便笺

JupyterLab:

  1. qtconsole
  2. Run > Run Selected Text or Current Line in Console,还可以使用键盘快捷键

请看下面的详细信息,以及答案结尾处的一些特殊情况


细节:

Jupyter Notebook选项1:qtconsole

可以说,插入新单元格最灵活的替代方法是使用magic函数打开IPython控制台。

%qtconsole
Run Code Online (Sandbox Code Playgroud)

对于更高级的控制台,您可以使用

%qtconsole --style vim
Run Code Online (Sandbox Code Playgroud)

在Jupyter Notebook中,在该控制台中执行的代码行的结果也将可用,因为它仍与正在运行的内核相同。缺点之一是,您必须复制并粘贴或在控制台中键入所需的行。

[qtconsole [1]

Jupyter Notebook选项2: Scratchpad Notebook扩展

成功安装后,您可以使用以下命令启动Scratchpad ctrl + B

在此处输入图片说明

JupyterLab选项1: %qtconsole

工作方式与笔记本电脑相同

JupyterLab选项2: Run > Run Selected Text or Current Line in Console

对于较新版本的JupyterLab,内置了与qtconsole类似的选项,但可以说更加优雅。现在,您可以将标记放在一行上,或突出显示一个选择,然后使用菜单选项Run > Run Selected Text or Current Line in Console

在此处输入图片说明

您仍然可以在IPython控制台中获得结果,但是不必添加额外的行,%qtconsole并且在单元格中运行选择的行要容易得多:

在此处输入图片说明

通过为菜单选项分配键盘快捷键,可以使事情变得更加简单Run > Run Selected Text or Current Line in Console

1-转到Settings并选择Advanced Settings editor

2-在下Keyboard shortcuts 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"
    }
Run Code Online (Sandbox Code Playgroud)

3-复制该部分并将其粘贴在下面,User Overrides然后在下面键入所需的快捷方式,如下所示keys

[...]
"keys": [
  "F9"
],
[...]
Run Code Online (Sandbox Code Playgroud)

4-Save All在下面单击File

5-如果过程顺利进行,您将看到菜单选项已更改:

在此处输入图片说明

6-您可能必须重新启动JupyterLab,但是现在您可以使用所需的快捷方式轻松地运行一行或选择一行。

编辑:特殊情况

您首选的方法将取决于相关行的输出性质。以下是plotly的示例。随着时间的流逝,可能会添加更多示例。

1 - plotly

可打印的图形不会直接显示在Jupyter QtConsole中(可能与相关),但是Jupyter Notebook中的Scratchpad和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)
Run Code Online (Sandbox Code Playgroud)

1.1-使用便签本

在此处输入图片说明

1.2-使用突出显示的行和键盘快捷键在JupyterLab控制台上进行绘图:

在此处输入图片说明

  • 是否没有办法在笔记本本身而不是控制台中运行选定的文本和输出? (4认同)
  • 哎呀,为什么这不直接内置到 Jupyter 中呢?看来你已经研究过了,你可以成为我们都需要的公关英雄:) (3认同)