我把我的Jupyter笔记本整理成:data.ipynb
,methods.ipynb
和{
我知道nbimporter
和{
我宁愿导入除两个或三个需要很长时间才能计算的单元格之外的所有内容。理想情况下,我希望将一些任务的执行推迟到我访问它们的那一刻(延迟评估),但我理解这可能很难实现。在
以下是伪代码中的概述(每行代表一个单元格):
data.ipynb
:
raw_data = load_data()
dataset = munge(raw_data)
describe(dataset) # I want this line to be skipped at import
methods.ipynb
:
results.ipynb
:
import data
import methods
result = methods.method(data.dataset)
describe(result)
动机是我的真实数据和方法笔记本:
此外,无法用methods.py
文件替换方法笔记本。事实上,我有这样一个文件,其中包含了我的方法的实现细节。笔记本更像是一个指定默认参数、展示我的方法如何工作以及解释示例结果的地方。在
这个问题本质上是一个组合:
我通读了这两个问题的答案,没有一个符合我的要求。在
在我下面的答案中,我提出了我的解决方案,使用自定义的细胞魔术和猴子补丁。但是,我更喜欢这样一种解决方案,它允许指定排除/包含哪些单元格/表达式,而不包括在原始笔记本(例如data.ipynb
)中,而是包含在目标笔记本中(例如methods.ipynb
)中。在
例如,它可以使用正则表达式:
# all variables starting with 'result' would be ignored
nbimporter.options['exclude'] = '^result.*'
或者(更好)懒惰的评价:
# only `a` and `b` would be evaluated and imported
from data import a, b
所有的想法都将得到赞赏!在
到目前为止,我一直在猴子修补
nbimporter
并使用cell magic选择要排除的单元格:细胞去除器猴子补丁的代码:
^{pr2}$还有一个实际的例子,
data.ipynb
:和
methods.ipynb
(末尾的异常是有意的-它意味着成功!)公司名称:编辑:我不久前将上述代码作为jupyter-helpers的一部分发布。使用此软件包,只需在导入笔记本中导入导入导入程序:
cell magic可以通过以下方式导入到导入的笔记本中:
下面是导入的笔记本示例:Data.ipynb和导入笔记本的示例:Results.ipynb
相关问题 更多 >
编程相关推荐