package import dangers

Steven D'Aprano steven at REMOVE.THIS.cybersource.com.au
Wed Oct 7 00:56:06 CEST 2009


On Tue, 06 Oct 2009 18:42:16 +0200, Diez B. Roggisch wrote:

> The most common problem is that a file is used as module and as
> executable at the same time.
> 
> Like this:
> 
> --- test.py ---
> 
> class Foo(object):
>     pass
> 
> 
> if __name__ == "__main__":
>    import test
>    assert Foo is test.Foo
> 
> ---
> 
> This will fail when executed from the commandline because the module is
> known twice - once as "__main__", once as "test".


Why would a module need to import itself? Surely that's a very rare 
occurrence -- I think I've used it twice, in 12 years or so. I don't see 
why you need to disparage the idea of combining modules and scripts in 
the one file because of one subtle gotcha.




-- 
Steven



More information about the Python-list mailing list