web-dev-qa-db-ja.com

IPython / Jupyterノートブックを非対話的に実行する

コマンドラインから非対話的にIPython/Jupyterノートブックを実行し、結果の.ipynbファイルは実行の結果とともに保存されました。まだ可能でない場合、phantomJS、カーネルのオン/オフを切り替えるもの、Webサーバーのオン/オフを切り替えるものを実装するのはどれくらい難しいでしょうか?

具体的には、ノートブックをすでに持っていると仮定しますoriginal.ipynbそしてそのノートブックのすべてのセルを再実行し、結果を新しいノートブックに保存しますnew.ipynb、ただし、ブラウザでの操作を必要とせずに、またはカーネルまたはWebサーバーを閉じずに、カーネルまたはWebサーバーが既に実行されていないと仮定して、コマンドラインで1つのコマンドでこれを行います。

コマンド例:

$ ipython notebook run original.ipynb --output=new.ipynb

71
davidshinn

はい、それは可能であり、簡単です。(ほとんど)2.0のIPythonコアにあります。今のところ これらの例 を見ることをお勧めします。

[編集]

$ jupyter nbconvert --to notebook --execute original.ipynb --output=new.ipynb

現在、Jupyter NbConvertにあります。 NbConvertには、デフォルトで無効になっているPreprocessorsの束が付属しており、そのうちの2つ(ClearOutputPreprocessorExecutePreprocessor)が重要です。 c.<PreprocessorName>.enabled=True(Pythonの大文字)を使用して(ローカル|グローバル)構成ファイルで有効にするか、コマンドラインで--ExecutePreprocessor.enabled=Trueを使用して残りのコマンドを通常どおりに維持できます。

--ExecutePreprocessor.enabled=Trueには、NbConvertの最新バージョンで使用できる便利な--executeエイリアスがあります。必要に応じて、--inplaceと組み合わせることができます

たとえば、ヘッドレスノートブックを実行した後、htmlに変換します。

$ jupyter nbconvert --to=html --execute RunMe.ipynb

出力を除去した後、PDFに変換する

$ ipython nbconvert --to=pdf --ClearOutputPreprocessor.enabled=True RunMe.ipynb

これは(もちろん)<insert-your-language-here>を設定した場合、--profile=<your fav profile>カーネルを生成することにより、非Pythonカーネルで動作します。変換は、ノートブックを再実行する必要があるため、非常に長くなる可能性があります。 --to=notebookオプションを使用して、ノートブックからノートブックへの変換を行うことができます。

ユースケースに応じて設定/設定解除が必要になる可能性のある他のさまざまなオプション(タイムアウト、エラーを許可、...)があります。詳細については、ドキュメントおよびもちろんjupyter nbconvert --help--help-all、または nbconvertオンラインドキュメント を参照してください。

61
Matt

この機能がコアの一部になるまで、必要なことを実行する小さなコマンドラインアプリを作成しました。これはrunipyと呼ばれ、pip install runipyでインストールできます。 ソースとreadmeはgithubにあります

20
paul

並列ワーカーや入力パラメーターなどの一部の機能をカバーするには、jupyter-runnerをインストールできます

pip install jupyter-runner

GithubのReadme: https://github.com/omar-masmoudi/jupyter-runner

1
Omar