我在 ipython 上删除了一个(包内置)函数:
Python 3.6.4 |Anaconda custom (64-bit)| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import math
In [2]: math.cos(0)
Out[2]: 1.0
In [3]: del math.cos
In [4]: math.cos(0)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-4-9cdcc157d079> in <module>()
----> 1 math.cos(0)
AttributeError: module 'math' has no attribute 'cos'
好的。但是我如何重新加载函数?这没有帮助:
In [5]: import importlib
In [6]: importlib.reload(math)
Out[6]: <module 'math' (built-in)>
In [7]: math.cos(0)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-7-9cdcc157d079> in <module>()
----> 1 math.cos(0)
AttributeError: module 'math' has no attribute 'cos'
最佳答案
上面的代码在 Windows 上的 Python 3.4 中适用于我,但 documentation for 3.6 状态:
(所以也许我只是“幸运”)
所以可以肯定的是:
import math,sys
del math.cos
del math
sys.modules.pop("math") # remove from loaded modules
import math
print(math.cos(0))
它仍然有效,您甚至不需要
reload
。只需从缓存中删除并再次导入。正如评论中所指出的,使用
reload
也可以,但是您需要更新 reload
给出的模块引用,而不仅仅是重用相同的旧模块引用,但缺少 cos
条目:import math,sys
del math.cos
import importlib
math = importlib.reload(math)
print(math.cos(0))
关于python - 删除了一个模块的交互功能。如何重新导入? importlib.reload 没有帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48808456/