2017-04-25 432 views
3

我在我的本地機器上創作了一個Jupyter筆記本,它最終將在遠程服務器(運行Ubuntu)上運行。每次需要更改時,我都必須將筆記本導出爲.py文件,然後從服務器的命令行調用它。從命令行運行Jupyter Notebook(.ipynb),就好像它是.py文件一樣

我希望能夠在飛行運行此,調用一個命令獲取當前.ipynb文件,並執行它的命令行中,就好像它是一個.py,顯示所有的打印報表輸出你」 d期望如果.py運行。我想nbconverter可能使用類似下面的命令做的伎倆:

jupyter nbconvert --to script --execute nbconvert_test.ipynb 

正如道岔,這並不在.ipynb轉換爲.py文件可以在命令行上執行的,因爲我想,而是在同一個目錄中創建一個名爲nbconvert_test.py的新文件,然後我必須在單獨的命令中運行該文件。我真的希望在每次進行小改動時都要防止創建該文件,並跳過命令行中的額外步驟。

任何幫助表示讚賞!

+2

可能的複製[運行從終端.ipynb?](http://stackoverflow.com/questions/35545402/running-ipynb-from-terminal) –

+0

感謝。是的,這個問題是相似的,但提供給這個問題的答案似乎並沒有把這個請求解釋爲尋找一個解決方案。 – beniam

回答

1

一種解決方法是,有三個部分

  1. 轉換筆記本
  2. 執行創建的腳本
  3. 除去腳本

創建一個文件一個小外殼腳本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} 

用作這樣的:

$ ./runnb.sh nbconvert_test.ipynb 

編輯: According to this answer,這個命令應該做的很好jupyter nbconvert --execute test_nbconvert.ipynb(只是LEAV出--to標誌

+0

感謝羅賓 - 我認爲如果沒有--to標誌,它會在包含輸出的同一個目錄中創建一個html文件,但並不完全適合賬單。你的三行腳本可能會訣竅。我現在要付錢...謝謝。 – beniam

2

您可以將jupyter nbconvert滯留輸出和管道,爲蟒蛇。的

jupyter nbconvert --to script --execute --stdout test_nbconvert.ipynb | python 
+0

這似乎不適用於我。它返回語法錯誤爲無效語法 – beniam

+0

嘗試管道到ipython而不是python?你可能會在筆記本中使用一些ipython特定的語法。 – fizzyh2o

相關問題