[英]Running an IPython/Jupyter notebook non-interactively
有誰知道是否可以從命令行以非交互方式運行 IPython/Jupyter 筆記本,並將生成的.ipynb
文件與運行結果.ipynb
保存。 如果還不可能,那么用 phantomJS 實現、打開和關閉內核以及打開和關閉 Web 服務器會有多難?
更具體地說,假設我已經有一個筆記本original.ipynb
並且我想重新運行該筆記本中的所有單元格並將結果保存在一個新的筆記本new.ipynb
,但是在命令行上使用一個命令執行此操作而不需要在瀏覽器中進行交互或關閉內核或 Web 服務器,並假設沒有內核或 Web 服務器已在運行。
示例命令:
$ ipython notebook run original.ipynb --output=new.ipynb
是的,這是可能的,而且很容易,它將(主要)在 2.0 的 IPython 核心中,我建議現在查看這些示例。
[編輯]
$ jupyter nbconvert --to notebook --execute original.ipynb --output=new.ipynb
它現在在 Jupyter NbConvert 中。 NbConvert 帶有一堆默認禁用的Preprocessor
,其中兩個( ClearOutputPreprocessor
和ExecutePreprocessor
)很有趣。 您可以通過c.<PreprocessorName>.enabled=True
(大寫是 python)在您的(本地|全局)配置文件中啟用它們,或者在命令行上使用--ExecutePreprocessor.enabled=True
保留其余部分命令像往常一樣。
該--ExecutePreprocessor.enabled=True
有方便--execute
可以在最新版本NbConvert的所使用的別名。 如果需要,它可以與--inplace
結合使用
例如,運行 notebook headless 后轉換為 html:
$ jupyter nbconvert --to=html --execute RunMe.ipynb
剝離輸出后轉換為 PDF
$ ipython nbconvert --to=pdf --ClearOutputPreprocessor.enabled=True RunMe.ipynb
如果您設置--profile=<your fav profile>
,這(當然)通過生成<insert-your-language-here>
內核確實適用於非 python 內核。 轉換可能真的很長,因為它需要重新運行筆記本。 您可以使用--to=notebook
選項進行筆記本到筆記本的轉換。
根據用例,可能需要設置/取消設置各種其他選項(超時、允許錯誤等)。 查看文檔,當然還有jupyter nbconvert --help
、 --help-all
或nbconvert 在線文檔以獲取更多信息。
在此功能成為核心的一部分之前,我組合了一個小命令行應用程序,它可以滿足您的需求。 它被稱為 runipy,您可以使用pip install runipy
安裝它。 源代碼和自述文件在 github 上。
要涵蓋一些功能,例如並行工作程序、輸入參數、電子郵件發送或 S3 輸入/輸出...您可以安裝 jupyter-runner
pip install jupyter-runner
github 上的自述文件: https : //github.com/omar-masmoudi/jupyter-runner
運行並替換原來的 .ipunb 文件:
jupyter nbconvert --ExecutePreprocessor.timeout=-1 --to notebook --inplace --execute original.ipynb
papermill
一種方法是使用papermill
,它有命令行界面
使用示例:(需要指定存儲執行結果的輸出路徑)
papermill your_notebook.ipynb logs/yourlog.out.ipynb
如果您希望為每個參數使用-p
標志,您還可以指定所需的參數:
papermill your_notebook.ipynb logs/yourlog.out.ipynb -p env "prod" -p tests "e2e"
還有一個與造紙廠回復相關的 - https://stackoverflow.com/a/55458141/2957102
您可以通過命令行運行 iPython-Notebook-server:
ipython notebook --pylab inline
這將以非交互模式啟動服務器,並且所有輸出都打印在代碼下方。 然后您可以保存包含代碼和輸出的 .ipynb 文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.