Lament: Import is not very smart.

John Lenton jlenton at
Wed Jul 14 16:02:58 CEST 2004

On 13 Jul 2004 15:25:50 -0700, Lonnie Princehouse
<fnord at> wrote:
> 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
> >> import bar
> >> == bar
> False
> The second import doesn't recognize that "bar" is already loaded as
>, 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
> >> import 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)

pychecker already does similar checks; I don't know if this one in
particular, but it probably does (I think it checks if you do 'import
foo' and 'from foo import bar', which is very similar); even if it
doesn't, that's the place to do it.

John Lenton (jlenton at -- Random fortune:
bash: fortune: command not found

More information about the Python-list mailing list