如何在 Jupyter Notebook 或 JupyterLab 单元中运行单行代码或选定代码?

Posted

技术标签:

【中文标题】如何在 Jupyter Notebook 或 JupyterLab 单元中运行单行代码或选定代码?【英文标题】:How to run a single line or selected code in a Jupyter Notebook or JupyterLab cell? 【发布时间】:2019-10-20 23:37:41 【问题描述】:

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

代码:

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

单元格和输出:

但是您如何只运行 line 2?或者甚至在一个单元格内选择行而不运行整个单元格?当然,您可以只插入一个带有单行或多行选择的单元格,但这很快就会变得非常麻烦和混乱。那么有没有更好的方法呢?

【问题讨论】:

【参考方案1】:

更新答案

自从我的第一个答案(我现在在1.1.4)以来,JupyterLab 已经有一些更新,并且有人说JupyterLab 1.0 will eventually replace the classic Jupyter Notebook,这是我认为现在最好的方法,甚至更多所以在未来:

在 JupyterLab 中,使用 Run > Run selected line or highlighted text 和指定的键盘快捷键在控制台中运行代码。

以下是使用键盘快捷键逐行运行三个打印语句时的样子:

这是在Settings > Advanced Settings > Keyboard shortcuts 中设置快捷方式的方法:

这是您需要在Settings > Keyboard Shortcuts > User preferences > 下添加的内容:


    // List of Keyboard Shortcuts
    "shortcuts": [
        
            "command": "notebook:run-in-console",
            "keys": [
                "F9"
            ],
            "selector": ".jp-Notebook.jp-mod-editMode"
        ,
    ]

快捷方式甚至会显示在菜单中。我选择使用F9


旧版本的原始答案:


简答:

Jupyter 笔记本:

    qtconsole 便签本

JupyterLab:

    qtconsole Run > Run Selected Text or Current Line in Console,可选择使用键盘快捷键

查看下面的详细信息,以及答案末尾的编辑中的一些特殊情况


详情:

Jupyter Notebook 选项 1: qtconsole

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

%qtconsole

您可以使用更花哨的控制台

%qtconsole --style vim

在此控制台中执行的行的结果也将提供给 Jupyter Notebook,因为它仍然是在运行的同一个内核。一个缺点是您必须在控制台中复制和粘贴或键入所需的行。

[

Jupyter Notebook 选项 2: Scratchpad Notebook Extension

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

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"
    

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

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

4 -点击File下的Save All

5 -如果过程顺利,您会看到您的菜单选项发生了变化:

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

##EDIT:特殊情况

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

1. - 阴谋

情节图不会直接显示在 Jupyter QtConsole 中(可能与 this 相关),但 Jupyter Notebook 中的 Scratchpad 和 Jupyterlab 中使用 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 - 用便签本作情节

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

【讨论】:

哎呀为什么这不只是内置在 Jupyter 中?看来你已经研究过了,你可以成为我们都需要的公关英雄:) @Eric 哈哈!很高兴为您服务! 嗨!我一直在使用这个功能,但现在我遇到了问题。我在运行 R 3.6.3 的环境中使用 conda,但控制台默认执行 R 3.6.0(使用您解释的配置)。如何设置要使用的版本?

以上是关于如何在 Jupyter Notebook 或 JupyterLab 单元中运行单行代码或选定代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jupyter notebook 中设置环境变量

如何在我的应用程序中显示 jupyter notebook 或 apache zeppelin?

使用亚马逊的云服务器EC2做深度学习配置Jupyter Notebook服务器

最全指南如何在 Jupyter Notebook 中切换/使用 conda 虚拟环境?

如何恢复 Jupyter Notebook 文件?

在jupyter-notebook中的markdown单元格边框 - 如何删除?