上面的代码对我来说适用于Windows上的Python
3.4,但3.6的文档指出:
但是要当心,就像您保留对模块对象的引用一样,在sys.modules中使它的缓存条目无效,然后重新导入命名模块,这两个模块对象将是不同的。相比之下,importlib.reload()将重用相同的模块对象,并通过重新运行模块的代码来简单地重新初始化模块内容。
(所以也许我只是“幸运”)
因此,可以肯定的是:
import math,sysdel math.cosdel mathsys.modules.pop("math") # remove from loaded modulesimport mathprint(math.cos(0))它仍然有效,您甚至不需要
reload。只需从缓存中删除并再次导入即可。
如注释中所述,使用
reload也可以,但是您需要更新给出的模块引用
reload,而不仅仅是重复使用
cos缺少条目的旧模块:
import math,sysdel math.cosimport importlibmath = importlib.reload(math)print(math.cos(0))



