当模块我爱IPython的,但我已经发现了%运行的一个问题:导入模块时运行%重复调用,不会重新加载。IPython的:重新导入使用%运行
假设文件ex1.py包含行:
import ex2
ex2.x.append(1)
print ex2.x
和文件ex2.py包含:
x = []
现在,从命令行运行蟒ex1.py反复打印[1]每次。但是,从内调用%run ex1.py
IPython的反复打印[1],[1,1],[1,1,1],等等,这是因为模块ex2.py不重新加载。所以我们有一个问题:ipython运行脚本协议并不反映“真实世界”的行为。
注:
%load_ext autoreload
%autoreload 2
不不帮助。这些行会是否改变已到ex2.py文件所做的得到ex2.py只有重新加载。如果我们没有做出任何改变,或者只是对ex1.py进行修改,我们会得到不希望的行为。
有没有什么办法让跑%表现喜欢这里的命令行?使用ipython作为脚本的测试环境似乎是一个真正的缺陷。 (或者道义上,一个模块不应该写入另一个模块的名称空间?)