使用魔术功能自动执行一组命令/导入

时间:2016-12-06 14:15:27

标签: python ipython jupyter-notebook

我在分析过程中创建了许多不同的笔记本。但是,每个笔记本都以相同的导入和其他语句开头。通常,以下代码行是我对第一个单元格的标准输入:

import pandas as pd
import numpy as np
.. otherimports

import sys
sys.path.append('../..')
... more imports from this directory

%matplotlib inline
%load_ext autoreload
%autoreload 2

我已经厌倦了复制粘贴或手动为每个笔记本键入这些内容,现在我正在尝试找到一种自动执行此操作的方式。

我查看了ipython扩展,所以我可以调用

%load_ext setup_analysis

但无法使用此类ipython扩展程序有效地将内容导入用户环境。扩展正在运行,但扩展文件中的导入不会导入到笔记本内核中(这是有意义的)。我尝试将交互式shell对象与user_expressions结合使用,但也没有用。

我的问题是:自动化此标准单元格的最简单方法是什么,如果要进行扩展,我该如何从这样的扩展中进行导入(以及相关的魔术函数)?

1 个答案:

答案 0 :(得分:0)

修复它:

可能有点做作,但它确实有效,所以我很高兴。将此留给那些希望让生活更轻松的未来人们。

解决方案:

按照these instructions跟随这些说明进行ipython扩展。

在此扩展程序的.py文件中,我编写了以下代码:

def instructions():
    inst = """
    import pandas as pd
    ... other imports

    sys.path.append('../..')
    ... more imports

    """
    return inst


def load_ipython_extension(ipython):
    compiled_file = "prep_log.py"
    code = compile(instructions(), compiled_file, 'exec')
    ipython.run_code(code)
    ipython.run_line_magic("matplotlib", "inline")
    ipython.run_line_magic("load_ext", "autoreload")
    ipython.run_line_magic("autoreload", "2")

现在我的笔记本顶部有%load_ext准备工作,我已经准备好了:)。