初学者的python reload模块。 importlib.reload似乎不起作用

时间:2018-07-11 14:58:46

标签: python module python-import reload

我有一个名为skdb的文件和一个名为skmysqldb的类。我正在尝试强制重新加载。

我尝试重新加载“ skdb”,“ skdb.skmysqldb”和“ skmysqldb”,但它们似乎都无法正常工作。

>>> from skdb import skmysqldb

>>> importlib.reload(skdb.skmysqldb)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'skdb' is not defined

>>> importlib.reload(skmysqldb)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\importlib\__init__.py", line 139, in reload
    raise TypeError("reload() argument must be a module")
TypeError: reload() argument must be a module

>>> importlib.reload(skdb)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'skdb' is not defined

1 个答案:

答案 0 :(得分:0)

使用from <module> import <obj>语法导入对象时,如

from skdb import skmysqldb

该模块本身未添加到当前名称空间,因此为什么在尝试执行NameError时会得到一个reload(skdb)

代替尝试:

import skdb
importlib.reload(skdb)

使用重装时要小心。如果您重新加载的模块导入了其他模块,则这些模块将递归地重新加载,因此,根据确切的代码,您可能会处于非常破损的状态,最好重新启动整个解释器。 >