18

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

在这个简单的情况下,我想做的是

In [20]: a=5

In [21]: run tst

tst.py 只是

print a

这个想法是我想运行一次加载脚本,然后只在 tst.py 上工作。

谢谢!

4

2 回答 2

26

尝试在 IPython 的魔法运行命令上使用 -i 选项;它使脚本使用当前的交互式命名空间运行,例如

加载.py:

a = 5

tst.py:

print a

从 IPython 我得到;

In [1]: from load import *

In [2]: run -i tst
5
于 2012-05-16T16:36:46.827 回答
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
于 2012-05-16T16:34:39.100 回答