On 4/19/07, Brett Cannon
... By leaving the ``__name__`` attribute in a module alone and setting a module attribute named ``__main__`` to a true value for the main module (and thus false in all others) ...
Part of me says that you are already proposing the right answer, as these alternatives are just a little too hackish. Still, they are good enough that they should be listed in the PEP, even if only as rejected alternatives. (1) You could add a builtin __main__ that is false. The real main module would mask it, but no other code would need to change. Con: Another builtin, and this one wouldn't even make sense as an independent object. (2) You could special-case the import to use __file__ instead of __name__ when __name__ == "__main__" Con: may be more fragile. (3) You could set __name__ to (an instance of) a funky string subclass that overrides __eq__. Con: may be hard to find exactly the *right* behavior. Examples: What should str(name) do? Maybe __main__ should be the primary value, and split should be overridden? -jJ