Sorry, forgot to use "reply to all"

---------- Forwarded message ---------
From: André Roberge <>
Date: Sat, Nov 14, 2020 at 11:06 AM
Subject: Re: [Python-ideas] Re: Global flag for whether a module is __main__
To: Steven D'Aprano <>

On Sat, Nov 14, 2020 at 10:45 AM Steven D'Aprano <> wrote:
On Sat, Nov 14, 2020 at 08:10:44AM -0400, André Roberge wrote:

> > What if you import the `__main__` module? What does `__imported__` say
> > now, and how do you check for "running as a script" if `__main__` has
> > imported itself -- or some other module has imported it?
> >
> Running a module (no matter what its name is) from a command line would set
> __imported__ to False for that module.
> Using import some_module (or __import__("some_module")) would set
> some_module.__imported__ to True.

Do you understand that a module can be both run and imported at the
same time?

    import __main__

As others have mentioned, many beginners are thoroughly confused by the meaning of the idiom

if __name__ == "__main__":

The idea behind the name  __imported__ (and, I gather, somewhat similar to the original suggestion of __main__ that started this thread) is to reduce such confusion.

For what I had in mind, the semantic would be the same as though the following was inserted at the top of the module:

__imported__ = True
if __name__ == "__main__":
     __imported__ = False

If you save that snippet as "", and then run it:


you have an example of a module that is being run and imported

Python-ideas mailing list --
To unsubscribe send an email to
Message archived at
Code of Conduct: