在Python 3.x中卸载模块

Quo*_*ans 5 python python-3.x

对我来说很明显,Python 2中没有干净的解决方案来卸载模块,这是一个已知的错误,已被纠正。

帖子:

如何卸载(重新加载)Python模块? 删除导入的python模块

2009年和2010年的报告证实了缺少对模块卸载的支持。

我想知道这是否在Python 3.x中得到了解决。当我这样做,import osdel osdir(),该os模块是不存在(至少不可见,可用)。没了吗

Kei*_*ith 0

sys.modules仍然保留对该模块的引用。

>>> import six
>>> del six
>>> sys.modules["six"]
<module 'six' from '/usr/lib64/python3.3/site-packages/six.py'>
Run Code Online (Sandbox Code Playgroud)

sys.modules 仍然保留引用。所以我认为你也不能卸载 Python 3.3 中的模块。

  • 你可以_[卸载模块](/sf/answers/34140291/),但你甚至没有真正尝试过。由于 `six` 是顶级纯 Python 模块,因此卸载 `six` 会减少为 **(A)** `del sys.modules['six']` 和 **(B)** `del Six` (按任一顺序)。就是这样。删除对该模块的所有引用会导致该模块被垃圾收集。 (12认同)