【问题标题】:Run Jupyter Notebook (.ipynb) from command line as if it were a .py file从命令行运行 Jupyter Notebook (.ipynb),就好像它是一个 .py 文件一样
【发布时间】:2017-09-22 00:16:32
【问题描述】:

我正在本地计算机上创作一个 Jupyter 笔记本,该笔记本最终将在远程服务器(运行 Ubuntu)上运行。每次我需要进行更改时,我都必须将笔记本导出为.py 文件,然后从服务器的命令行调用它。

我希望能够即时运行它,调用一个命令,该命令采用当前.ipynb 文件并在命令行上执行它,就好像它是.py,显示所有打印语句和如果运行.py,您会期望输出。我认为nbconverter 可能会使用以下命令来解决问题:

jupyter nbconvert --to script --execute nbconvert_test.ipynb

事实证明,这不会像我希望的那样将.ipynb 转换为要在命令行上执行的.py 文件,而是在我想要的同一目录中创建一个名为nbconvert_test.py 的新文件然后必须在单独的命令中运行。我真的很想阻止每次我进行微小更改时创建该文件,并跳过命令行上的额外步骤。

感谢任何帮助!

【问题讨论】:

标签: python jupyter-notebook jupyter nbconvert


【解决方案1】:

您可以将 jupyter nbconvert 发送到搁浅的输出并将其通过管道传输到 python。

jupyter nbconvert --to script --execute --stdout test_nbconvert.ipynb | python

【讨论】:

  • 这似乎对我不起作用。它返回无效语法的语法错误
  • 尝试管道到 ipython 而不是 python?你可能在 notebook 中使用了一些 ipython 特定的语法。
【解决方案2】:

解决方法是一个包含三个部分的小型 shell 脚本

  1. 转换笔记本
  2. 执行创建的脚本
  3. 删除脚本

创建文件runnb.sh

#!/bin/sh
# First argument is the notebook you would like to run
notebook=$1
scriptname="$(basename $notebook .ipynb)".py

jupyter nbconvert --to script --execute ${notebook} && python ${scriptname}
rm ${scriptname}

这样使用:

$ ./runnb.sh nbconvert_test.ipynb

编辑: According to this answer,这个命令应该很好jupyter nbconvert --execute test_nbconvert.ipynb(只需省略--to标志

【讨论】:

  • 谢谢 Robin-我认为如果没有 --to 标志,它会在包含输出的同一目录中创建一个 html 文件,但不完全符合要求。您的三行脚本可能会奏效。我现在就付钱……谢谢。
【解决方案3】:

使用 boar 包,您可以在 python 代码中运行您的笔记本,使用:

from boar.running import run_notebook

outputs = run_notebook("nbconvert_test.ipynb")

有关详细信息,请参阅:

https://github.com/alexandreCameron/boar/blob/master/USAGE.md

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2016-06-03
    • 2022-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多