[英]How to reload Python module in IDLE?
我试图了解我的工作流程如何与 Python 和 IDLE 一起工作。
假设我写了一个 function:
def hello():
print 'hello!'
我将文件保存为greetings.py
。 然后在 IDLE 中,我测试 function:
>>> from greetings import *
>>> hello()
hello!
然后我更改程序,并想再次尝试hello()
。 所以我reload
:
>>> reload(greetings)
<module 'greetings' from '/path/to/file/greetings.py'>
然而,变化并没有被采纳。 我究竟做错了什么? 如何重新加载更改的模块?
我一直在阅读一些关于 SO 的相关问题,但没有一个答案对我有帮助。
您需要重做这一行:
>>> from greetings import *
在你做之后
>>> reload(greetings)
仅重新加载模块不起作用的原因是因为 * 实际上导入了模块内的所有内容,因此您必须单独重新加载这些内容。 如果您执行以下操作,它将按预期运行:
>>> import greetings
>>> greetings.hello()
hello!
对文件进行更改
>>> reload(greetings)
<module 'greetings' from 'greetings.py'>
>>> greetings.hello()
world!
这是我尝试您的示例时得到的结果(来自新的 Python 交互式会话):
>>> from greetings import *
>>> reload(greetings)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'greetings' is not defined
这表明了问题的根源。 当您使用from greetings import *
时,名称greetings
不会导入到全局命名空间中。 因此,您不能对其使用reload(greetings)
。
要解决此问题,请尝试以下操作:
>>> import greetings
>>> greetings.hello()
hello
>>> reload(greetings)
<module 'greetings' from 'greetings.pyc'>
>>> greetings.hello()
hello world
在 windows 上,我使用 shell->Restart shell 或 CTRL+F6 快捷键重新启动并加载最新版本的 mod
IDLE 有一个菜单选择来运行当前文件。 这将通过首先运行您的文件并重新加载它来重新启动 shell。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.