簡體   English   中英

以非交互方式運行 IPython/Jupyter 筆記本

[英]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 ,其中兩個( ClearOutputPreprocessorExecutePreprocessor )很有趣。 您可以通過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-allnbconvert 在線文檔以獲取更多信息。

在此功能成為核心的一部分之前,我組合了一個小命令行應用程序,它可以滿足您的需求。 它被稱為 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM