【问题标题】:execute a Jupyter Notebook cell programmatically以编程方式执行 Jupyter Notebook 单元
【发布时间】:2018-05-14 01:12:41
【问题描述】:

Jupyter Notebook 单元是否可以以编程方式执行另一个单元? (即使用 Python)

如果可以,是否可以指定要执行的单元格编号?

【问题讨论】:

    标签: python-3.x jupyter-notebook


    【解决方案1】:

    有一个名为 execute_cells (see it on Github) 的 javascript 函数,当给定单元格索引列表时,它会运行这些单元格。

    %%javascript
    Jupyter.notebook.execute_cells([0]) # 0 to run first cell in notebook etc.
    

    如果你需要专门在Python代码单元中运行,可以使用IPython.display模块中的Javascript函数来执行javascript

    from IPython.display import Javascript
    Javascript("Jupyter.notebook.execute_cells([2])")
    

    请注意,这会将光标移动到已执行的单元格。如果您想回到光标位置,您可以获取下一个单元格的编号以便执行它(代码改编自this answer):

    %%javascript
    Jupyter.notebook.execute_cells([0]) # 0 to run first cell in notebook etc.
    
    var output_area = this;
    // find my cell element
    var cell_element = output_area.element.parents('.cell');
    // which cell is it?
    var cell_idx = Jupyter.notebook.get_cell_elements().index(cell_element);
    Jupyter.notebook.execute_cells([cell_idx+1]) # execute next cell
    

    【讨论】:

    • 我得到一个 python 错误:ModuleNotFoundError: No module named 'Jupyter' 我应该导入什么模块来访问'Jupyter'?
    • 抱歉,忘记指定这是来自笔记本的 javascript,因此您需要使用 %%javascript cell 魔术命令将单元格作为 javascript 运行。我更新了我的答案以反映这一点。
    • 正如问题中指定的,需要 Python 来调用单元的执行。可以用 Python 来执行这个 Javascript 函数吗?
    • 为什么需要专门在 python 代码单元中运行它?无论哪种方式,我都添加了如何在 python 代码单元中运行它。如果您真的不想使用 javascript,我认为没有简单的解决方案 - 也许您可以使用 nbconvert?
    • 有什么办法可以找到任意单元格的cell_idx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2021-06-06
    • 2022-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多