在单独的命名空间中执行另一个ipython笔记本

在单独的命名空间中执行另一个ipython笔记本,ipython,ipython-notebook,Ipython,Ipython Notebook,我一直在使用来自的一些非常好的代码从一个ipython笔记本运行另一个ipython笔记本,我(基本上)在下面复制了这些代码。这是一种很好的组织代码的方法 但是现在,我想把我编写的一些sympy表达式与其他人编写的大致相同的sympy表达式进行比较。由于存在一些名称冲突,我希望能够在它们自己的名称空间中执行这两个笔记本,这样,如果Bob和我都定义了一个sympy表达式x,我就可以计算 Bob.x - Me.x 看看它们是否相同(或找出它们的差异)。[请注意,使用以下内容将名称空间字典更改为“点

我一直在使用来自的一些非常好的代码从一个ipython笔记本运行另一个ipython笔记本,我(基本上)在下面复制了这些代码。这是一种很好的组织代码的方法

但是现在,我想把我编写的一些sympy表达式与其他人编写的大致相同的sympy表达式进行比较。由于存在一些名称冲突,我希望能够在它们自己的名称空间中执行这两个笔记本,这样,如果Bob和我都定义了一个sympy表达式
x
,我就可以计算

Bob.x - Me.x
看看它们是否相同(或找出它们的差异)。[请注意,使用以下内容将名称空间字典更改为“点表”名称空间很容易。]

下面是函数:

def exec_nb(nbfile):
    from io import open
    from IPython.nbformat import current
    with open(nbfile) as f:
        nb = current.read(f, 'json')
    ip = get_ipython()
    for cell in nb.worksheets[0].cells:
        if cell.cell_type != 'code':
            continue
        ip.run_cell(cell.input)
基本问题是
get\u ipython
获取当前运行的ipython实例,然后
run\u cell
执行该实例当前命名空间中其他笔记本中的单元格

我不知道该怎么改变这个。例如,在
exec
中使用不同的名称空间运行整个命令仍然会找到当前的ipython实例,并使用该名称空间


而且,这两款笔记本实际上都需要在ipython中运行;我无法将它们导出到脚本并在命名空间中执行脚本。

记录在案,Jakob指向的链接现在已移动,完美地回答了我的问题。

您也可以看看这个笔记本,谢谢!这看起来正是我想要的。