使用 "del np.dtype" 后,是否应该重新导入 numpy 来解决这个问题?

After using "del np.dtype", should re-importing numpy fix this?

我正在尝试了解 python 中的导入行为。

我使用了 del numpy.dtype,当我输入 numpy.dtype 时它会抛出错误。但是当我尝试重新导入 numpy 时,它没有帮助。

我试图通过执行 del sys.modules['numpy'] 来遵循 Python: "de-import", "re-import", "reset import"? 的答案,但是当我之后再次尝试导入 numpy 时出现错误。

所有这一切的奇怪之处在于我 可以 仍然使用 numpy 没有任何问题,除了当我键入 numpy.dtype 时,我得到错误:

AttributeError: 'module' object has no attribute 'dtype'

谁能解释一下发生了什么以及我该如何恢复:

  1. numpy.dtype
  2. 能够无错误地导入 numpy


我在 Spyder 交互式 IPython 控制台中使用 Python2.7。

一个模块只会在 Python 中导入一次,因此您后续的导入不会执行任何操作。您可以使用 importlibreload 方法重新加载库,这将在您删除它后将 dtype 带回来。


import importlib
importlib.reload(numpy)

# numpy.dtype accessible again

你提到你使用的是Python2.7,2.7中包含的importlib主要是为了更新方便,并没有包含reload方法。你真的应该更新到 Python 3,因为 2020 年快到了,但如果你坚持,你可以使用内置的 reload 方法。