Si __name__ == '__main__': una descripción breve:
Cada archivo de módulo o pitón pitón (archivo hello1.py en la figura siguiente, y la diferencia entre el módulo pitón pitón --python archivos que tienen una extensión de archivo .py) incluye una función de la variable __name__, pero siempre se refiere a la ejecución actual __main__ archivo o la ruta actual. Cuando el archivo es ejecutado directamente, __ name__ ser igual al nombre del archivo es igual __main__, __name__ a la vez se le asignará automáticamente al analizador "__main__", tipo de cadena (Tenga en cuenta que el valor no será __name__ asignado a tt.hello1.py, véase la Figura 1) , de modo que la expresión si __name __ == "__ main__" es cierto. A continuación, vistazo a la Fig. 2, si el módulo (es decir tt.hello1) es de importación a otros módulos, el módulo es igual __name__ nombre de módulo ( no incluido sufijo .py), es decir, el valor en este momento tt.hello1 __name__ (Figura 2) .
A los archivos de pitón usados típicamente en dos maneras, en primer lugar como una secuencia de comandos se ejecuta directamente, y la segunda es la importación de otra secuencia de comandos pitón se llama (bloque de reutilización) realizaron. Así, si __name__ == '__main__': función es controlar la ejecución del código en ambos casos del proceso. 1, la figura 2, si __name__ == '__main__':. Solamente no se ejecuta el código en el primer caso (es decir, como un archivo de script realizado directamente) se ejecutará, y para importar otro script (porque en este momento __name __ = tt.hello1, expresión si __name __ == "__ main__" es falsa ).
Entonces analizar ModuleNotFoundError por qué ser dado: módulo No llamado; '__main__' no es un paquete, que se muestra en la Figura 3 '__Main __ base.'
La figura usando una ruta relativa, no encontrado importación, .hello1 es decir, el módulo de hello1 trayectoria de corriente
En este momento se analiza en .hello1 __main __. Hola, haciendo que el programa falle, para utilizar una ruta absoluta