NameError:未定义名称'reload'

时间:2012-04-13 14:30:55

标签: python python-3.x

我正在使用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 个答案:

答案 0 :(得分:118)

你可能想要importlib.reload()

from importlib import reload

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

请注意,在解释器之外使用reload()通常是不必要的,您在这里尝试做什么?

答案 1 :(得分:9)

更新@Gareth Latty的回答。 Python {3}中折旧imp。现在你需要importlib.reload()

from importlib import reload

答案 2 :(得分:3)

尝试importlib.reload

  

重新加载以前导入的模块。参数必须是模块对象,因此必须先成功导入。如果您使用外部编辑器编辑了模块源文件并希望在不离开Python解释器的情况下试用新版本,这将非常有用。

from importlib import reload

reload(module_name)

答案 3 :(得分:0)

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

export PYTHONSTARTUP=$HOME/python/startup.py

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

from importlib import reload

~/python/startup.py中,它将自动发生。 (同样,如果您继续,请在这一点上开始一个新的python会话。)这可能看起来有点复杂,只是为了解决这个问题,但是您只需要做一次,然后对每个类似的问题进行操作就可以了。按照“我希望python始终会这样做”的思路,一旦找到解决方案,就可以将其放在~/python/startup.py中,而不必理会。