[Python-ideas] PEP for executing a module in a package containing relative imports

Christian Heimes lists at cheimes.de
Mon Apr 23 02:35:14 CEST 2007


Neil Toronto wrote:
> On the other hand, IMNSHO, either of the following two are just about 
> perfect in terms of understandability, and parsimony:
> 
>     def __main__():  # we really don't need args here
>         # stuff

I think __main__(*argv) has some benefits over __main__(). It allows you 
to call the function with different arguments from another script or a 
unit test.

def __main__(argv=None):
     if argv is None:
         argv = sys.argv # has the same effect but it is ugly

> FWIW, I don't see a problem with a sys.modules['__main__'] - it would 
> even occasionally be useful - but nobody should be *required* to use an 
> abomination like that for what's clearly a newbie task: determining 
> whether a module is run as a script.

I see the problem in having the same module under two names in 
sys.modules. It may lead to issues (reload?). Also it is not necessary 
to get the main module if we store the dotted name in sys.main. So 
sys.modules[sys.main] would return the main module.

Christian




More information about the Python-ideas mailing list