Python shell 和 execfile 范围
我在 ipython shell 内部工作,经常需要重新加载包含正在构建的函数的脚本文件。
在我的 main.py 中,我有:
def myreload(): execfile("main.py") execfile("otherfile.py")
如果我已经在同一个 ipython 会话中直接运行 execfile 命令,则
调用 myreload() 可以正常工作。然而,由于某种原因,如果会话是新鲜的并且我刚刚调用了 execfile("main.py"),那么 myreload() 实际上并没有使 otherfile.py 内部的函数可用。但它不会抛出任何错误。
有什么想法吗?
I'm working from inside an ipython shell and often need to reload the script files that contain my functions-under-construction.
Inside my main.py I have:
def myreload():
execfile("main.py")
execfile("otherfile.py")
Calling myreload() works fine if I have already ran in the same ipython session the execfile commands directly.
However, for some reason, if the session is fresh and I just called execfile("main.py"), then myreload() doesn't actually make the functions from inside otherfile.py available. It doesn't throw any error though.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
函数创建了一个新的范围。
execfile()
在当前范围内运行脚本。你正在做的事情是行不通的。Functions create a new scope.
execfile()
runs the script in the current scope. What you are doing will not work.如果您想了解 ipython 的实际正确用法(即在交互模式下),那么您应该使用如下魔术命令:
并
使用
%run?
检查这些函数的帮助。这提供了明确的例子。另请参阅 http://ipython.org/ipython-doc/stable/interactive/tutorial .html
If you seek to learn the actual correct usage of ipython (i.e. in interactive mode), then you should use magic commands like:
and
Check help for those functions with
%run?
. This provides explicit examples.See also http://ipython.org/ipython-doc/stable/interactive/tutorial.html