从脚本中的IPython交互式命名空间访问变量

时间:2012-05-16 16:00:05

标签: python ipython

是否有一种简单的方法来访问IPython交互式命名空间中的变量。在实现具有慢加载命令的项目时,我想运行一个脚本将数据加载到交互式工作空间,然后调用第二个使用数据的脚本,就像使用MATLAB一样。

在这个简单的例子中,我想要做的是

In [20]: a=5

In [21]: run tst

其中tst.py只是

print a

我的想法是,我想运行一次加载脚本,然后只使用tst.py。

谢谢!

2 个答案:

答案 0 :(得分:23)

尝试在IPython的magic run命令中使用-i选项;它使脚本使用当前的交互命名空间运行,例如与

load.py:

a = 5

tst.py:

print a

来自IPython我得到了;

In [1]: from load import *

In [2]: run -i tst
5

答案 1 :(得分:2)

没有简单或聪明的方法来做到这一点。一种方法是在测试函数中使用main函数,然后从您的环境传入globals以更新调用者中的globals。例如:

tst.py

def main(borrowed_globals):
    globals().update(borrowed_globals)
    print a

然后在iPython中:

In [1]: a = 5

In [2]: import tst

In [3]: tst.main(globals())
5