是否有一种简单的方法来访问IPython交互式命名空间中的变量。在实现具有慢加载命令的项目时,我想运行一个脚本将数据加载到交互式工作空间,然后调用第二个使用数据的脚本,就像使用MATLAB一样。
在这个简单的例子中,我想要做的是
In [20]: a=5
In [21]: run tst
其中tst.py只是
print a
我的想法是,我想运行一次加载脚本,然后只使用tst.py。
谢谢!
答案 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