在 python 3.7 上使用 importlib 重新加载

reload using importlib on python 3.7

我正在尝试使用 importlib 重新加载文件。我在 Python 3.7 上使用 Anaconda 提示符,但我不明白为什么当我尝试 importlib.reload 时它说“'importlib' 未定义”,但当我使用 from x import reload 时它有效.

这里有效:

>>> import script1  
win32  
1267650600228229401496703205376
SpamSpamSpamSpamSpamSpamSpamSpam  
import importlib  
>>> from importlib import reload  
>>> reload(script1)  
win32
1267650600228229401496703205376
SpamSpamSpamSpamSpamSpamSpamSpam

这里不行:

Python 3.7.3  
>>> import script1  
win32  
1267650600228229401496703205376  
SpamSpamSpamSpamSpamSpamSpamSpam  
import importlib  
>>> importlib.reload(script1)  
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'importlib' is not defined

看起来 import importlib 命令是在 script1 模块中评估的(在导入时),因此它仅在 script1 中可用。 script1 的导入完成后,此模块中导入的任何内容都会超出范围。如果您想重新加载它,请尝试在 import script1 之后显式评估 import importlib 。您的 input/output 应如下所示:

Python 3.7.3  
>>> import script1  
win32  
1267650600228229401496703205376  
SpamSpamSpamSpamSpamSpamSpamSpam  
import importlib
>>> import importlib
>>> importlib.reload(script1)