如何从终端直接创建和打开Jupyter Notebook的ipynb文件

57

输入命令 jupyter notebook 会打开Jupyter目录树页面,您可以在其中创建一个ipynb文件。

是否有方法跳过该页面并直接在浏览器上创建和打开ipynb文件?

我在想像这样的命令:jupyter notebook mynotebook.ipynb

6个回答

15

在浏览器中打开笔记本

jupyter notebook <notebook>.ipynb
创建一个空的、最简化的笔记本:
"""create-notebook.py
   Creates a minimal jupyter notebook (.ipynb)
   Usage: create-notebook <notebook>
"""
import sys
from notebook import transutils as _
from notebook.services.contents.filemanager import FileContentsManager as FCM

try:
    notebook_fname = sys.argv[1].strip('.ipynb')
except IndexError:
    print("Usage: create-notebook <notebook>")
    exit()

notebook_fname += '.ipynb'  # ensure .ipynb suffix is added
FCM().new(path=notebook_fname)

创建笔记本别名的脚本:

alias create-notebook='python $(pwd)/create-notebook.py'

整合所有内容

create-notebook my_notebook && jupyter notebook my_notebook.ipynb


jupyter notebook <notebook>.ipynbjupyter notebook <path/to>/<notebook>.ipynb 在 Linux 系统下至少有一个非常不幸的副作用,即将文件树的 "根" 锁定在包含 <notebook>.ipynb 的目录中,这使得无法从命令行或通过点击笔记本顶部左侧的 Jupyter 徽标打开不是该目录直接子目录的其他目录中的笔记本文件。 - ack

14

这可能不是最理想的方法。也许有一种原生于 Jupyter 或扩展的选项,但我没有发现任何一种方法,也没有遇到过这种需求。文档表明开发人员鼓励用户在仪表板上着陆。

从一个空的笔记本 Untitled.ipynb开始。生成它,保存从 jupyter 仪表板创建新笔记本时创建的默认文件。这个空的笔记本将用作在命令行中创建新的空笔记本的模板。Untitled.ipynb 的内容对于我来说,在 jupyter 版本 4.4.0 上是这样的:

$ cat Untitled.ipynb
{
 "cells": [],
 "metadata": {},
 "nbformat": 4,
 "nbformat_minor": 2
}
文件包含使用 jupyter notebook Untitled.ipynb(最终为mynotebook.ipynb)启动笔记本所需的最少内容,任何更少的内容都会引发NotJSONError。如果需要包含默认内核,则可以向模板添加一些元数据。
从这里开始,使用命令替换在命令行中打开一个新的空白笔记本,其中Untitled.ipynb是上述模板笔记本的路径,mynotebook.ipynb是您要创建的笔记本的名称。
$ jupyter notebook $(cat Untitled.ipynb >mynotebook.ipynb && echo mynotebook.ipynb)

谢谢!我刚刚进行了一些小修改,使用了一个heredoc:github gist - Eric Cousineau
关于Jupyter nbformat v4,这些键是代码中提到的最小模式在此处 - Muhammad Yasirroni

7

您可以尝试下面的命令。

jupyter nbconvert --to notebook --execute mynotebook.ipynb

根据下面的Jupyter nbconvert手册nbconvert命令支持使用--execute参数运行笔记本。

enter image description here 希望它能对你有用。


3
没成功。我收到了[NbConvertApp] WARNING | pattern u'mynotebook.ipynb' matched no files This application is used to convert notebook files (*.ipynb) to various other formats.这个提示,接下来是一长串的信息。 - multigoodverse
@multigoodverse 看起来警告提示没有找到ipynb文件。你能否使用绝对路径指定mynotebook.ipynb? - thewaywewere
2
我使用绝对路径得到相同的东西。 - multigoodverse
如果笔记本文件路径和/或文件名包含重音字符(ãí等),那可能是问题的原因。查看这个链接,看看是否有帮助。 - thewaywewere
3
它不会创建新的笔记本!它会打开一个已存在的。 - Shahryar

4

我也曾遇到类似的问题,并创建了 nbplot 来解决它:https://github.com/nburrus/nbplot。它旨在从命令行快速在笔记本中绘制文件,但总体上它只是一个用于从模板生成笔记本并在浏览器中打开它们的微小工具。以下是如何使用其中包含的空白模板回答您的问题:

pip3 install --upgrade nbplot
nbplot -t empty -o mynotebook.ipynb

它会尝试聪明地重复使用现有的笔记本服务器,而不总是启动一个新的笔记本服务器。如果您不想从空白笔记本开始,可以轻松添加自定义笔记本模板到~/.nbplot/

1

您可以使用jupytext在命令行中创建一个新的笔记本:

# create python file
touch foo.py

# add kernel information
jupytext --set-kernel - foo.py

# convert to notebook
jupytext --to notebook foo.py

# open in browser
jupyter notebook foo.ipynb

https://jupytext.readthedocs.io/en/latest/using-cli.html


这些命令可以被包装在一个名为jupyinit的Shell脚本中:

#!/bin/bash
# Create a new Jupyter notebook from the command line
# 
# Examples
# jupyinit env_name py_file.py py_file.ipynb

touch $2
jupytext --set-kernel $1 $2
jupytext --to notebook --execute $2
jupytext --set-formats ipynb,py $3

然后可以使用以下命令创建OP的示例:

$ jupyinit myenv mynotebook.py mynotebook.ipynb


1
这非常有价值 - 但" --set-kernel "功能不再需要。 - aronchick
那么,每次我更新了 mynotebook.py ,我都需要再次运行 jupyinit ... 吗? - VimNing

-1
Jupyter将在本地Tornado服务器上开始运行。链接类似于http://localhost/Tree。 打开笔记本时,会在另一页中完成。您可以尝试编写批处理脚本来调用Kupyter笔记本,然后使用笔记本地址调用浏览器。我认为如果笔记本不存在或未创建,则不会起作用(页面未创建,无法打开)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接