2

我在 ipython shell 内部工作,并且经常需要重新加载包含我正在构建的函数的脚本文件。

在我的 main.py 中,我有:

def myreload(): execfile("main.py") execfile("otherfile.py")

如果我已经在同一个 ipython 会话中直接运行了 execfile 命令,则调用 myreload() 可以正常工作。

但是,由于某种原因,如果会话是新的并且我只是调用了 execfile("main.py"),那么 myreload() 实际上不会使 otherfile.py 中的函数可用。虽然它不会抛出任何错误。

有任何想法吗?

4

2 回答 2

2

函数创建一个新的范围。execfile()在当前范围内运行脚本。你正在做的事情是行不通的。

于 2010-08-22T05:56:32.190 回答
2

如果您想了解ipython的实际正确用法(即在交互模式下),那么您应该使用以下魔术命令:

%run

%edit

使用 .查看这些功能的帮助%run?。这提供了明确的例子。

另见http://ipython.org/ipython-doc/stable/interactive/tutorial.html

于 2013-05-23T16:30:34.157 回答