[Fwd: Lament: Import is not very smart.]

Paul Prescod <[email protected]> Thu, 15 Jul 2004 03:27:08 -0700
Newsgroups gmane.comp.lang.prothon.user
Message-ID <[email protected]>
Another Python quirk to avoid...

-------- Original Message --------
Subject: Lament: Import is not very smart.
Date: 13 Jul 2004 15:25:50 -0700
From: [email protected] (Lonnie Princehouse)
Organization: http://groups.google.com
To: [email protected]
Newsgroups: comp.lang.python

I don't know if this is a bug or a feature, but it sure is annoying.
I apologize if it's already been discussed to death elsewhere (I
couldn't find anything).

Suppose that you've a package named "foo" which contains module "bar".
  Because you're careless, you've also put foo/ into your path...

Here's the problem:

>> import foo.bar
>> import bar
>> foo.bar == bar
False

The second import doesn't recognize that "bar" is already loaded as
foo.bar, and loads the module again.  I know it's easy to avoid this
by being consistent, but wouldn't be more intuitive if import checked
a hash of loaded module filenames before importing something anew?
E.g.

>> import foo.bar
>> import bar
>> foo.bar == bar
True

It's probably too late to change, but it's food for thought.

(addendum: I ran into this when isinstance seemingly malfunctioned
while I was patching together lots of modules into a cohesive package;
turns out there were some instances that had been created from
package.module.class and others that were instances of module.class..
it took a while to figure out just what the problem was)
-- 
http://mail.python.org/mailman/listinfo/python-list