每当我尝试在python版本3.3.2中重新加载python模块时,我都会收到此错误代码
>>> import bigmeesh
>>> bob=bigmeesh.testmod()
this baby is happy
>>> imp.reload(bigmeesh)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
imp.reload(bigmeesh)
NameError: name 'imp' is not defined
我尝试过研究但仍然没有答案。
答案 0 :(得分:14)
您必须import imp
才能使用它,就像使用任何其他模块一样:
>>> import bigmeesh
>>> import imp
>>> imp.reload(bigmeesh)
请注意the documentation清楚地说:
注意:新程序应该使用
importlib
而不是此模块。
但是,在3.3中,importlib
没有简单的reload
函数;你必须自己从importlib.machinery
建立它。因此,对于3.3,坚持使用imp
。但是在3.4及更高版本中有importlib.reload
,请改用它。
值得注意的是reload
通常不是你想要的。例如,如果您希望bob
更改为新版bigmeesh.testmod()
的实例,则不会。但是,另一方面,如果您希望它根本不会发生变化,您可能会感到惊讶,因为它的一些行为可能取决于 更改的全局变量。
答案 1 :(得分:3)
这是重新加载模块的现代方法:
~/.zshrc
只需键入# Reload A Module
def modulereload(modulename):
import importlib
importlib.reload(modulename)
,将modulereload(MODULE_NAME)
替换为您要重新加载的模块的名称。
例如,MODULE_NAME
将重新加载数学函数。