我在本地计算机上创作了一个Jupyter笔记本,最终将在远程服务器(运行Ubuntu)上运行。每次我需要进行更改时,我必须将笔记本导出为.py
文件,然后从服务器的命令行调用它。
我希望能够动态运行它,调用一个获取当前.ipynb
文件的命令并在命令行上执行它,就好像它是.py
一样,如果.py
已运行,则显示所有打印报表和输出。我认为nbconverter
可以使用类似以下命令的方法来完成这个任务:
jupyter nbconvert --to script --execute nbconvert_test.ipynb
事实上,这并没有像我希望的那样将.ipynb
转换为.py
文件在命令行上执行,而是创建了一个名为nbconvert_test.py
的新文件在同一个目录中,然后我必须在一个单独的命令中运行。我真的很想在每次做一些小改动时阻止创建该文件,并且在命令行上跳过额外的步骤。
感谢任何帮助!
答案 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脚本
创建文件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