python supports several forms of starting a script. The usual one is python foo.py; in that case, foo.py would be simply executed.
However, you can also do python -m foo. If foo is not a package, then foo.py is found in sys.path and executed. If it is, then Python executes foo/__init__.py, and foo/__main__.py after that. Note, that __name__ is equal to foo during __init__.py execution, but it's __main__ during __main__.py execution.
You also can do python dir/ or even python dir.zip. In that case, dir/__main__.py is looked for and executed if found.
$ ls foo
__init__.py __main__.py
$ cat foo/__init__.py
print(__name__)
$ cat foo/__main__.py
print(__name__)
$ python -m foo
foo
__main__
$ python foo/
__main__
$ python foo/__init__.py
__main__