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在同一个目录中创建了一个新文件,然后我必须在单独的命令中运行该文件。我真的很想防止每次更改时都创建该文件,并跳过命令行上的额外步骤。
任何帮助表示赞赏!
您可以将jupyter nbconvert发送到绞线输出,然后将其通过管道传输到python。
jupyter nbconvert --to script --execute --stdout test_nbconvert.ipynb | python
Run Code Online (Sandbox Code Playgroud)
解决方法是使用一个包含三个部分的小型 shell 脚本
创建一个文件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标志