从命令行运行Jupyter Notebook(.ipynb),就好像它是一个.py文件一样

ben*_*iam 3 python jupyter jupyter-notebook nbconvert

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

我希望能够即时运行此命令,调用一个命令以获取当前.ipynb文件,并像在a一样在命令行中执行它.py,显示所有打印语句和输出(如果.py运行了) 。我认为nbconverter可以使用以下命令来解决问题:

jupyter nbconvert --to script --execute nbconvert_test.ipynb
Run Code Online (Sandbox Code Playgroud)

如此一来,它并没有像我希望的那样将转换为.ipynb.py在命令行上执行的文件,而是nbconvert_test.py在同一个目录中创建了一个新文件,然后我必须在单独的命令中运行该文件。我真的很想防止每次更改时都创建该文件,并跳过命令行上的额外步骤。

任何帮助表示赞赏!

fiz*_*h2o 5

您可以将jupyter nbconvert发送到绞线输出,然后将其通过管道传输到python。

jupyter nbconvert --to script --execute --stdout test_nbconvert.ipynb | python
Run Code Online (Sandbox Code Playgroud)


Rob*_*eth 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}
Run Code Online (Sandbox Code Playgroud)

像这样使用:

$ ./runnb.sh nbconvert_test.ipynb
Run Code Online (Sandbox Code Playgroud)

编辑: 根据这个答案,这个命令应该做得很好jupyter nbconvert --execute test_nbconvert.ipynb(只需省略--to标志