重新加载模块给NameError:name'reload'没有被定义
我想重新加载一个模块,我已经在Python 3中导入。我知道你只需要导入一次,再次执行import
命令将不会做任何事情。
执行reload(foo)
是给这个错误:
Traceback (most recent call last): File "(stdin)", line 1, in (module) ... NameError: name 'reload' is not defined
错误是什么意思?
reload
是Python 2中的一个内置函数,但不是Python 3中的,因此您所看到的错误是预期的。
如果你真的必须在Python 3中重新加载一个模块,你应该使用:
- Python 3.4和更高版本的
importlib.reload
-
imp.reload
for Python 3.0 to 3.3(自Python 3.4开始弃用,以支持importlib
)
import imp imp.reload(script4)
对于> = Python3.4:
import importlib importlib.reload(module)
对于<= Python3.3:
import imp imp.reload(module)
对于Python2.x:
使用内置的reload()
函数。
reload(module)
为了扩展以前的书面答案,如果你想要一个可以在Python版本2和3上使用的解决scheme,你可以使用下面的代码:
try: reload # Python 2.7 except NameError: try: from importlib import reload # Python 3.4+ except ImportError: from imp import reload # Python 3.0 - 3.3
我build议使用下面的代码片段,因为它可以在所有python版本中工作(需要six
):
from six.moves import reload_module reload_module(module)
你删除了__builtins__variables。
如何解决这个问题? 不要删除__builtins__。
也可以有人解释一步一步的错误信息是什么意思?
这意味着python找不到函数“reload”。
重新加载(script4.py)
这是不正确的。 如果你做“导入script4”,那么你必须做“重载(script4)”