A veces est谩s escribiendo un m贸dulo Python y quieres que se pueda ejecutar como un script, para lo cual le creas un fichero __main__.py en su directorio ra铆z.El problema de esto es que te obliga a ejecutarlo siempre como python -m nombremodulo, y muchas veces los depuradores no son capaces de entender eso.

驴Soluci贸n? Ejecutar directamente __main__.py. Solo que esto plantea otro problema: que entonces no puedes realizar importaciones relativas.

驴Soluci贸n real? A帽ade siempre este c贸digo al principio de tu __main__.py:

import os
import sys
from importlib import import_module

# Emular la ejecuci贸n como m贸dulo si se ejecuta como script
if __name__ == '__main__' and __package__ is None:
    parent_dir = os.path.abspath(os.path.dirname(__file__))
    sys.path.append(os.path.dirname(parent_dir))
    __package__ = os.path.basename(parent_dir)
    import_module(__package__)

Con eso consigues que los siguientes dos comandos sean equivalentes. Usa el 2潞 para depurar:

$ python -m nombremodulo
$ python ./nombremodulo/__main__.py