从命令行运行Jupyter Notebook(.ipynb),就好像它是.py文件一样

时间:2017-04-25 06:13:10

标签: python jupyter-notebook jupyter nbconvert

我在本地计算机上创作了一个Jupyter笔记本,最终将在远程服务器(运行Ubuntu)上运行。每次我需要进行更改时,我必须将笔记本导出为.py文件,然后从服务器的命令行调用它。

我希望能够动态运行它,调用一个获取当前.ipynb文件的命令并在命令行上执行它,就好像它是.py一样,如果.py已运行,则显示所有打印报表和输出。我认为nbconverter可以使用类似以下命令的方法来完成这个任务:

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

事实上,这并没有像我希望的那样将.ipynb转换为.py文件在命令行上执行,而是创建了一个名为nbconvert_test.py的新文件在同一个目录中,然后我必须在一个单独的命令中运行。我真的很想在每次做一些小改动时阻止创建该文件,并且在命令行上跳过额外的步骤。

感谢任何帮助!

3 个答案:

答案 0 :(得分:5)

您可以将jupyter nbconvert发送到搁浅输出并将其发送到python。

  extension UserFeed: UICollectionViewDelegate, UICollectionViewDataSource {

  func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    resizeCollectionView()
    return feeds.count
  }

  func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    userFeedDelegate?.didSelectFeed(feeds[indexPath.row])
  }

  func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: UserFeedCollectionViewCell.kCellIdentifier, for: indexPath) as! UserFeedCollectionViewCell
    print(indexPath.row)
    cell.setup(feeds[indexPath.row])
    return cell
  }

}

答案 1 :(得分:1)

解决方法是一个包含三个部分的小型shell脚本

  1. 转换笔记本
  2. 执行创建的脚本
  3. 删除脚本
  4. 创建文件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(只是抛出--to标志

答案 2 :(得分:0)

通过boar软件包,您可以使用以下命令在python代码中运行笔记本电脑

from boar.running import run_notebook

outputs = run_notebook("nbconvert_test.ipynb")

有关更多信息,请参见:

https://github.com/alexandreCameron/boar/blob/master/USAGE.md