85

我正在使用 python 3.2.2。当我编写一个简单的程序时,我遇到了这个问题。

>>> reload(recommendations)
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    reload(recommendations)
NameError: name 'reload' is not defined

我该怎么做?

4

4 回答 4

172

你可能想要importlib.reload().

from importlib import reload

在 Python 2.x 中,这是一个builtin,但在 3.x 中,它在importlib模块中。

请注意,reload()通常不需要在解释器之外使用,你想在这里做什么?

于 2012-04-13T14:31:17.833 回答
12

@Gareth Latty 答案的更新。imp在 Python 3.4 中已贬值。现在你想要importlib.reload().

from importlib import reload
于 2017-06-06T16:38:02.537 回答
11

试试importlib.reload

重新加载以前导入的模块。参数必须是一个模块对象,所以它必须之前已经成功导入。如果您使用外部编辑器编辑了模块源文件并且想要在不离开 Python 解释器的情况下试用新版本,这将非常有用。

from importlib import reload

reload(module_name)
于 2018-05-25T10:33:08.537 回答
0

正如其他人所说,您需要importlib.reload(module)或在更早的时候需要from importlib import reload. 但是您可以将其隐藏from importlib import reload在初始化文件中。确保PYTHONSTARTUP在你的 shell 中定义了它。例如,

export PYTHONSTARTUP=$HOME/python/startup.py

~/.bash_profile如果您的 shell 是 bash,并且取决于您存储 python 文件的位置,可能会添加到您的 . (如果您按照这些说明进行操作,请在此时启动一个新的终端窗口,以便执行该行。)然后您可以将该行

from importlib import reload

~/python/startup.py它会自动发生。(同样,如果你跟着,在这一点上开始一个新的 python 会话。)这可能看起来有点复杂,只是为了解决这个问题,但这是你只需要做一次的事情,然后对于每个类似的问题就像“我希望 python 永远这样做”那样,一旦你找到了解决方案,你就可以把它放进去,~/python/startup.py然后忘记它。

于 2020-09-22T21:53:20.313 回答