我想以编程的方式运行一个包含导入语句的jupyter笔记本单元,并使用打开笔记本后导入的包,而不仅仅是将输出转换为一个新的ipython 。
目前,我正在使用am转换来执行一个预先创建的木星笔记本。执行该笔记本的步骤如下-
jupyter nbconvert --execute --inplace test.ipynb创建新笔记本的代码-
import nbformat as nbf
nb = nbf.v4.new_notebook()
nb['cells'] = [nbf.v4.new_markdown_cell(text),nbf.v4.new_code_cell(code,metadata={'editable':False,'deletable':False}) ]
nbf.write(nb, 'test.ipynb')
笔记本单元中的代码块包含-
import pandas as pd
import numpy as np
import matplotlib as plt
%pylab inline
hist(normal(size=2000), bins=50)输出单元格按预期显示直方图。但是,在打开笔记本之后,我无法使用导入的包。是否有一种方法可以在命令行中执行笔记本,然后在打开笔记本后使用导入的包,而不必再次手动运行单元格?
发布于 2019-02-19 21:11:05
我能够通过安装jupyter扩展-木星笔记本扩展nbextensions来解决这个问题。
在启用上述链接中文档中指定的init_cell扩展之后,我在笔记本创建代码中添加了元数据标记"init_cell":True nbf.v4.new_code_cell(code,metadata={'editable':False,'deletable':False,'trusted':True,'init_cell':True}),以便将单元格设置为初始化单元。
此外,我还必须在命令行中执行行jupyter trust test.ipynb,以确保将笔记本设置为受信任的单元块,以便在笔记本加载时运行。
这将导致在加载笔记本之后执行初始化的代码单元格块,从而使我能够使用导入的包和变量(如果有的话),而不必手动运行单元格。
https://stackoverflow.com/questions/54773877
复制相似问题