[Python-Dev] Q: import logic

Guido van Rossum guido@digicool.com
Fri, 06 Jul 2001 11:48:03 -0400


> Hi. I have looked at CPython import logic (C code) ...
> 
> is the following true (ignoring relative import issues and None markers):
> 
> trying to import s.p.a.m the logic checks for:
> 
> s.p.a.m
> s.p.a
> s.p
> s
> 
> in sys.modules in this order until it finds an already present
> module and starts the effective loading from there.
> 
> Is that an implementation detail, or should be considered an
> important semantic aspect.
> 
> Jython has a different logic but then some tricky python code
> (substituing packages with classes) can incur in inf recursion.
> 
> Thanks, Samuele Pedroni.

I'm not sure what alternative you had in mind, so I'm not sure how to
answer this (fearing it is a trick question :-).

This is supposed to look for s first, then s.p, then s.p.a, and then
s.p.a.m.  So exactly the opposite order of what you state!

I hesitate to call this an implementation detail -- it really is
intentional behavior that packages s, s.p, and s.p.a must be loaded
and initialized before the import of s.p.a.m is attempted.

Can you clarify the background of your question?

--Guido van Rossum (home page: http://www.python.org/~guido/)