我正在使用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
我该怎么做?
答案 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)
重新加载以前导入的模块。参数必须是模块对象,因此必须先成功导入。如果您使用外部编辑器编辑了模块源文件并希望在不离开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
中,而不必理会。 p>