是否有一种简单的方法可以访问 IPython 交互式命名空间中的变量。在实现具有慢速加载命令的项目时,我想运行一个脚本将数据加载到交互式工作空间中,然后调用第二个使用数据的脚本,就像 MATLAB 一样。
在这个简单的情况下,我想做的是
In [20]: a=5
In [21]: run tst
tst.py 只是
print a
这个想法是我想运行一次加载脚本,然后只在 tst.py 上工作。
谢谢!
尝试在 IPython 的魔法运行命令上使用 -i 选项;它使脚本使用当前的交互式命名空间运行,例如
加载.py:
a = 5
tst.py:
print a
从 IPython 我得到;
In [1]: from load import *
In [2]: run -i tst
5
没有简单或聪明的方法可以做到这一点。一种方法是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