问题:如何从终端运行.ipynb Jupyter Notebook?
我在.ipynb文件中有一些代码,并且到了我真的不需要IPython Notebook的“交互”功能的地步。我想直接从Mac Terminal命令行运行它。
基本上,如果这只是一个.py文件,我相信我可以从命令行执行python filename.py。.ipynb文件是否存在类似内容?
I have some code in a .ipynb file and got it to the point where I don’t really need the “interactive” feature of IPython Notebook. I would like to just run it straight from a Mac Terminal Command Line.
Basically, if this were just a .py file, I believe I could just do python filename.py from the command line. Is there something similar for a .ipynb file?
回答 0
From the command line you can convert a notebook to python with this command:
jupyter nbconvert --to python nb.ipynb
https://github.com/jupyter/nbconvert
You may have to install the python mistune package:
sudo pip install -U mistune
回答 1
nbconvert允许您运行带有--execute
标志的笔记本:
jupyter nbconvert -- execute < notebook >
如果您想运行一个笔记本并生产一个新的笔记本,则可以添加--to notebook
:
jupyter nbconvert -- execute -- to notebook < notebook >
或者,如果您想用新的输出替换 现有的笔记本:
jupyter nbconvert -- execute -- to notebook -- inplace < notebook >
由于这是一个很长的命令,因此可以使用别名:
alias nbx = "jupyter nbconvert --execute --to notebook"
nbx [-- inplace ] < notebook >
nbconvert allows you to run notebooks with the --execute
flag:
jupyter nbconvert --execute <notebook>
If you want to run a notebook and produce a new notebook, you can add --to notebook
:
jupyter nbconvert --execute --to notebook <notebook>
Or if you want to replace the existing notebook with the new output:
jupyter nbconvert --execute --to notebook --inplace <notebook>
Since that’s a really long command, you can use an alias:
alias nbx="jupyter nbconvert --execute --to notebook"
nbx [--inplace] <notebook>
回答 2
您可以从中导出所有代码.ipynb
并将其另存为.py
脚本。然后,您可以在终端中运行脚本。
希望能帮助到你。
You can export all your code from .ipynb
and save it as a .py
script. Then you can run the script in your terminal.
Hope it helps.
回答 3
在终端中运行ipython:
ipython
然后找到您的脚本并放在此处:
% run your_script . ipynb
In your Terminal run ipython:
ipython
then locate your script and put there:
%run your_script.ipynb
回答 4
对于新版本,而不是:
ipython nbconvert -- to python < YourNotebook >. ipynb
您可以使用ipython的jupyter实例:
jupyter nbconvert -- to python < YourNotebook >. ipynb
For new version instead of:
ipython nbconvert --to python <YourNotebook>.ipynb
You can use jupyter instend of ipython:
jupyter nbconvert --to python <YourNotebook>.ipynb
回答 5
更新作者引用的评论,以提高可见度:
作者注释:“该项目在Jupyter的执行API之前启动,现在是从命令行运行笔记本的推荐方式。请考虑弃用不维护runipy的软件。” –塞巴斯蒂安·帕尔马(Sebastian Palma)
安装允许在终端上运行代码的runipy库
pip install runipy
只是编译您的代码后:
runipy < YourNotebookName >. ipynb
您也可以尝试cronjob。所有信息都在这里
Update with quoted comment by author for better visibility:
Author’s note “This project started before Jupyter’s execute API, which is now the recommended way to run notebooks from the command-line. Consider runipy deprecated and unmaintained.” – Sebastian Palma
Install runipy library that allows running your code on terminal
pip install runipy
After just compiler your code:
runipy <YourNotebookName>.ipynb
You can try cronjob as well. All information is here
回答 6
就我而言,最适合我的命令是:
jupyter nbconvert -- execute -- clear - output < notebook >. ipynb
为什么?此命令不会创建额外的文件(就像.py
文件一样),并且每次执行Notebook时,单元的输出都会被覆盖。
如果您运行:
jupyter nbconvert -- help
–clear-output清除当前文件的输出并保存到位,覆盖现有笔记本。
In my case, the command that best suited me was:
jupyter nbconvert --execute --clear-output <notebook>.ipynb
Why? This command does not create extra files (just like a .py
file) and the output of the cells is overwritten everytime the notebook is executed.
If you run:
jupyter nbconvert --help
–clear-output
Clear output of current file and save in place, overwriting the existing notebook.
回答 7
You can also use the boar
package to run your notebook within a python code.
from boar.running import run_notebook
outputs = run_notebook("nb.ipynb")
If you update your notebook, you won’t have to convert it again to a python file.
More information at:
https://github.com/alexandreCameron/boar/blob/master/USAGE.md
回答 8
从终端运行
jupyter nbconvert -- execute -- to notebook -- inplace -- allow - errors -- ExecutePreprocessor . timeout =- 1 my_nb . ipynb
默认超时为30秒。-1消除了限制。
如果您希望将输出笔记本保存到新笔记本中,则可以使用该标志 --output my_new_nb.ipynb
From the terminal run
jupyter nbconvert --execute --to notebook --inplace --allow-errors --ExecutePreprocessor.timeout=-1 my_nb.ipynb
The default timeout is 30 seconds. -1 removes the restriction.
If you wish to save the output notebook to a new notebook you can use the flag --output my_new_nb.ipynb
回答 9
我有同样的问题,我找到了造纸厂 。与其他解决方案相比的优势在于,您可以在笔记本计算机运行时看到结果。当笔记本电脑花费很长时间时,我发现此功能很有趣。这是非常容易使用:
pip install papermill
papermill notebook . ipynb output . ipynb
它还具有其他方便的选项,例如将输出文件保存到Amazon S3,Google Cloud等。有关更多信息,请参阅页面。
I had the same problem and I found papermill . The advantages against the others solutions is that you can see the results while the notebook is running. I find this feature interesting when the notebook takes very long. It is very easy to use:
pip install papermill
papermill notebook.ipynb output.ipynb
It has also, other handy options as saving the output file to Amazon S3, Google Cloud, etc. See the page for more information.