導入標準的「日誌」模塊污染sys.modules來了一堆假的條目:爲什麼sys.modules中有僞模塊?
Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on win32
>>> import sys
>>> import logging
>>> sorted(x for x in sys.modules.keys() if 'log' in x)
['logging', 'logging.atexit', 'logging.cStringIO', 'logging.codecs',
'logging.os', 'logging.string', 'logging.sys', 'logging.thread',
'logging.threading', 'logging.time', 'logging.traceback', 'logging.types']
# and perhaps even more surprising:
>>> import traceback
>>> traceback is sys.modules['logging.traceback']
False
>>> sys.modules['logging.traceback'] is None
True
所以導入此包使額外的名字到sys.modules中,只是他們不模塊,只是沒有引用。其他模塊(例如xml.dom和編碼)也有這個問題。爲什麼?
編輯:上bobince的回答大廈,也有描述the origin頁面(請參見「sys.modules中虛擬條目」)和功能的future。
良好的聯繫...我沒有真正發現這是記錄在任何地方之前。很明顯,出於某種原因,我沒有尋找明顯的標題「誰說Neeeow ... Wum ... Ping的騎士」。啊,Python ... – bobince 2009-12-24 17:01:51
我打算髮佈一個確切的副本 - 今天我的第二個:P – 2017-01-23 17:30:50