如何在空闲状态下重新加载Python模块?

如何在空闲状态下重新加载Python模块?,python,module,reload,python-idle,Python,Module,Reload,Python Idle,我试图了解我的工作流如何与Python和IDLE一起工作 假设我写了一个函数: def hello(): print 'hello!' >>> from greetings import * >>> hello() hello! 我将文件保存为greetings.py。然后在空闲状态下,我测试功能: def hello(): print 'hello!' >>> from greetings import * >&

我试图了解我的工作流如何与Python和IDLE一起工作

假设我写了一个函数:

def hello():
    print 'hello!'
>>> from greetings import *
>>> hello()
hello!
我将文件保存为
greetings.py
。然后在空闲状态下,我测试功能:

def hello():
    print 'hello!'
>>> from greetings import *
>>> hello()
hello!
然后我修改了程序,想再次尝试
hello()
。所以我重新加载:

>>> reload(greetings)
<module 'greetings' from '/path/to/file/greetings.py'>
重新加载(问候语) 然而,这一变化并未得到重视。我做错了什么?如何重新加载修改过的模块


我已经阅读了许多与此相关的问题,但没有一个答案对我有帮助。

IDLE有一个菜单选择来运行当前文件。这将通过首先运行文件并重新加载来重新启动shell。

您需要重做此行:

来自问候语导入的
>>*

等你做完了

>>重新加载(问候语)

重新加载模块不起作用的原因是*实际上导入了模块内的所有内容,因此您必须单独重新加载这些内容。如果您执行了以下操作,它的行为将与您预期的一样:

>>> import greetings
>>> greetings.hello()
hello!
更改文件

重新加载(问候语) >>>你好 世界!
以下是我在尝试您的示例时得到的信息(来自一个全新的Python交互式会话):


在windows上,我使用shell->Restart shell或CTRL+F6快捷方式重新启动并加载最新版本的modue

我认为在他的示例中,他忽略了一个事实,即他同时导入了问候语和来自问候语导入*,因此上面的示例对他来说很有用。在这种情况下,仅重新加载问候语不会导致对hello()的调用被更新,即使对hello.hello()的调用可以正常工作。@Jacinda您可能是对的,我已经尝试了很多事情,并试图提取出重要的行为。@FarmBoy这是我以前遇到的一个错误。当我意识到发生了什么后,我总是会有一种“哦,糟了”的感觉。
ctrl+f6
也会重新启动您的会话。或者您可以在文件编辑器中按f5(空闲)或只使用ctrl-f6。更容易
>>> import greetings
>>> greetings.hello()
hello
>>> reload(greetings)
<module 'greetings' from 'greetings.pyc'>
>>> greetings.hello()
hello world