【发布时间】:2026-02-09 03:40:01
【问题描述】:
我很清楚,Python 2 中没有干净的解决方案来卸载模块,这是一个已知的错误,已设置为进行更正。
帖子:
How do I unload (reload) a Python module? Remove an imported python module
2009 年和 2010 年证实了缺乏对卸载模块的支持。
我想知道这是否已在 Python 3.x 中解决。当我这样做时,import os,del os,dir(),os 模块不存在(至少不可见,可用)。没了?
【问题讨论】:
-
import os; del os; assert 'os' not in dir()也适用于 Python 2。 -
检查
sys.modules,而不是dir。 -
@poke。我已经链接到该页面。我在问它是否仍然是最新的。那里的答案与 Python 2.x 有关,我询问了 Python 3.x。
-
@poke 这是糟糕的设计,你错了:完全卸载纯 Python 模块是trivial。例如,完全卸载*模块
foo会减少到del sys.modules['foo']; del foo。 就是这样。 完全卸载子模块稍微复杂一些,但不是真的。然而,完全卸载 C 扩展似乎是不可行的。 -
这不是重复的...... importlib 没有“卸载”功能
标签: python python-3.x