2014-02-07 105 views
3

我很清楚,在Python 2中沒有乾淨的解決方案來卸載模塊,這是一個已知的錯誤,它被設置爲糾正。在Python 3.x中卸載模塊

的帖子:

How do I unload (reload) a Python module? Remove an imported python module

2009年全年和2010年證實了這一缺乏卸載模塊支持的

我不知道這是否在Python 3.x中解決。當我這樣做時,import os,del os,dir()os模塊不存在(至少不可見,可用)。它消失了嗎?

+0

'import os;德洛斯;斷言'os'不在dir()中也存在於Python 2中。 – delnan

+0

好吧,那將是知道內存是否被釋放的錯誤方法。 –

+1

檢查'sys.modules',而不是'dir'。 – geoffspear

回答

0

sys.modules仍然保留對模塊的引用。

>>> import six 
>>> del six 
>>> sys.modules["six"] 
<module 'six' from '/usr/lib64/python3.3/site-packages/six.py'> 

sys.modules仍然有一個引用。所以我不認爲你可以在Python 3.3中卸載一個模塊。

+2

您可以_can_ [卸載模塊](https://stackoverflow.com/a/487718/2809027),但您甚至沒有嘗試過。因爲'six'是一個頂級的純Python模塊,卸載'six'會減少到**(A)**'del sys.modules ['six']'和**(B)**'del six' (以任意順序)。而已。刪除對該模塊的所有引用會導致該模塊被垃圾收集。 –