[Python-Dev] Peculiar import code in pickle.py

Antoine Pitrou solipsis at pitrou.net
Tue Jul 13 17:34:18 CEST 2010


On Tue, 13 Jul 2010 11:25:23 -0400
Alexander Belopolsky <alexander.belopolsky at gmail.com> wrote:
> When pickle.py needs to import a module by name, it goes through a
> peculiar dance of
> 
>             __import__(module, level=0)
>             mod = sys.modules[module]
> 
> As far as I can tell, unless builtins.__import__ is overridden or
> sys.modules clobbered by user code, the above should be equivalent to
> 
>             mod = __import__(module, level=0)

Only for top-level modules:

>>> __import__("distutils.core", level=0)
<module 'distutils' from
'/home/antoine/py3k/__svn__/Lib/distutils/__init__.py'>
>>> sys.modules["distutils.core"]
<module 'distutils.core' from
'/home/antoine/py3k/__svn__/Lib/distutils/core.py'>


Regards

Antoine.




More information about the Python-Dev mailing list