0

我读了很多关于重载的文章,但我无法使用重载功能。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 的正确目录中。

4

1 回答 1

3

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

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

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()加载此类模块。

于 2013-10-24T17:00:14.823 回答