如何在 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 或 apache zeppelin?
使用亚马逊的云服务器EC2做深度学习配置Jupyter Notebook服务器