在Python 3.3.2中重新加载函数用法

时间:2013-10-24 16:58:41

标签: python python-3.x error-handling reload

我在重载时读了很多但是我无法使用重载功能。在imp.py本身有一些错误。我没有做任何改动。

>>> import imp
>>> imp.reload('fileread')
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    imp.reload('fileread')
  File "C:\Python33\lib\imp.py", line 258, in reload
    raise TypeError("reload() argument must be module")
TypeError: reload() argument must be module

fileread存储在python的正确目录中。

1 个答案:

答案 0 :(得分:3)

您需要将实际模块对象传递给imp.reload()

如果您只有模块名称,请在sys.modules mapping中查找模块对象:

import sys
import imp

imp.reload(sys.modules['fileread'])

这仅适用于已导入的模块;如果您的某些条目尚未导入,请至少抓住KeyError跳过这些:

try:
    imp.reload(sys.modules[modulename])
except KeyError:
    # not loaded, no point in reloading
    pass

或者,您可以使用importlib.import_module()来加载此类模块。