¿Para qué sirve __init__.py?
¿Para qué sirve __init__.py
un directorio fuente de Python?
Solía ser una parte obligatoria de un paquete ( el "paquete normal" anterior a 3.3 , no el "paquete de espacio de nombres" 3.3+ más nuevo ).
Aquí está la documentación.
Python define dos tipos de paquetes, paquetes normales y paquetes de espacio de nombres. Los paquetes normales son paquetes tradicionales tal como existían en Python 3.2 y versiones anteriores. Un paquete normal normalmente se implementa como un directorio que contiene un
__init__.py
archivo. Cuando se importa un paquete normal, este__init__.py
archivo se ejecuta implícitamente y los objetos que define están vinculados a nombres en el espacio de nombres del paquete. El__init__.py
archivo puede contener el mismo código Python que puede contener cualquier otro módulo, y Python agregará algunos atributos adicionales al módulo cuando se importe.
Pero simplemente haga clic en el enlace, contiene un ejemplo, más información y una explicación de los paquetes de espacios de nombres, el tipo de paquetes sin __init__.py
.
Los archivos nombrados __init__.py
se utilizan para marcar directorios en el disco como directorios de paquetes de Python. Si tienes los archivos
mydir/spam/__init__.py
mydir/spam/module.py
y mydir
está en tu camino, puedes importar el código module.py
como
import spam.module
o
from spam import module
Si elimina el __init__.py
archivo, Python ya no buscará submódulos dentro de ese directorio, por lo que los intentos de importar el módulo fallarán.
El __init__.py
archivo suele estar vacío, pero se puede utilizar para exportar partes seleccionadas del paquete con un nombre más conveniente, mantener funciones convenientes, etc. Dado el ejemplo anterior, se puede acceder al contenido del módulo init como
import spam
Esta respuesta se basa en esta página web .