Importación del módulo estándar "registro" contamina sys.modules con un montón de entradas ficticias:¿Por qué hay módulos ficticios en 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
Así importar este paquete pone nombres adicionales en sys.modules, excepto que no son módulos, sólo las referencias a Ninguno . Otros módulos (por ejemplo, xml.dom y codificaciones) tienen este problema también. ¿Por qué?
Editar: Sobre la base de la respuesta de bobince, hay páginas que describen the origin (véase la sección "Entradas de maniquí en sys.modules") y future de la función.
Buen enlace ... En realidad no había visto esto documentado en ninguna parte antes. Evidentemente, por alguna razón, no había buscado el título obvio "The Knights Who Say Neeeow ... Wum ... Ping". Ah, Python ... – bobince
Iba a publicar un duplicado exacto - mi segundo hoy: P –