__init__.py en python - Que es y como funciona
__init__.py en Python |
Hoy vamos a ver que es y como funciona el archivo __init__.py en python.
Hace unos días les mostré como instalar eclipse para python. Luego de haberlo instalado y crear un nuevo proyecto me llamo mucho la atención el archivo __init__.py que se creaba automáticamente al crear un nuevo modulo. Busque un poco de información por la web y queria compartir con ustedes un resumen de lo entendido.
Que es y como funciona __init__.py
El principal uso de __init__.py es inicializar paquetes de Python. La forma mas fácil de darnos cuenta es ir hasta el directorio donde tenemos instalado python y fijarnos en las librerías y paquetes que trae por defecto python. Ahí vamos a ver que todos contienen un archivo __init__.py.
Vamos a poner un ejemplo:
Directorios con Archivos |
El archivo __init__.py se utiliza para realizar configuraciones de importación. Algo que se utiliza mucho en este archivo es la importación de clases, funciones, etc, para que puedan ser utilizadas en otros paquetes.
Supongamos que estamos realizando un proyecto (imagen a la derecha). Tenemos una carpeta principal llamada Proyecto y dentro de ella otra subCarpeta llamada PythonDiario. Estas carpetas a su ves, contienen módulos creados por nosotros en python. Si el archivo main.py, que es el principal, necesita importar algo de la subCarpeta PythonDiario, va a necesitar del archivo __init__.py para hacerlo.
Si el archivo __init__.py no existiese, no se podría importar nada desde el archivo main.py que esta en la carpeta Proyecto.
Lo que hace el __init__ entonces es configurar el comando de importación global:
Lo que hace el __init__.py, es que estando el, yo puedo importar desde el main.py de la siguiente manera:
»»»from PythonDiario import *
En este caso importara todo, o lo que este escrito dentro de el archivo __init__.py
Si nosotros dejamos el arhcivo __init__.py vacio, podemos importar desde el main.py de la siguiente forma:
»»»import PythonDiario #Como si fuera un modulo
El archivo __init__.py no tiene porque tener contenido dentro, se puede dejar vacío.
Conclusión:
Lo que hace __init__.py es "convertir" un directorio en un modulo (paquete) que contiene otros módulos, y esto lo hace para poder importarlos.
En caso de contener algún error, dejar sus comentarios para aclarar... Saludos
-
-
Francisco: me alegro te gusten los artículos que publico. Gracias
-
-
Verdaderamente que son cortos y sencillos de entender, me gusta mucho el formato que le das a las explicaciones..
-
Me alegro mucho de que te gusten los artículos. Saludos
-
-
Que bien.. la explicacion 😀
-
Me alegro te guste Betty. Gracias por tu comentario
-
-
Muy buenos los artículos, sencillos, fácil de entender y práticos, gracias por compartir tus aprendizajes/conocimientos.
-
Me alegro de que te sean útiles Jorge. Saludos
-
-
al fin entendi que es el __init__.py gracias
-
Hola, te hago una consulta yo tengo una estructura de directorios asi:
.
├── features
│ ├── genera_tapa.feature
│ └── steps
│ └── generar_tapa.py
├── __init__.py
├── tests
│ ├── __pycache__
│ │ └── test_interface.cpython-27-PYTEST.pyc
│ ├── test_interface.py
│ └── test_interface.pyc
└── ui
├── __init__.py
└── interface.py
El tema es que desde el directorio test no logro acceder a la carpeta ui, he intentado de varias maneras pero siempre me dice que no encuentra el modulo generador.ui (este es el error que me tira: ImportError: No module named generador.ui) tenes idea de que puede estar pasando? desde ya gracias y muy clara u explicacion 🙂-
Añade algo como:
import sys
sys.path.append('/home/user/lugardelgenerador')
antes de hacer el
import generador.ui -
Añade algo como:
import sys
sys.path.append('/home/user/lugardelgenerador')
antes de hacer el
import generador.ui
-
-
Muy clara la explicación muchas gracias!!!
-
Gracias a ti por visitar el blog. Saludos
-
-
Muchas gracias por tu explicación me aclaró mucho!
-
Hola Nico, gracias a ti por visitar el blog!!! Saludos
-
-
Muchas gracias, fue de gran ayuda la información.
-
Gracias a ti Anilina por visitar el blog. Saludos
-
-
Hola saludos,, ¿como importo un modulo que esta en una carpeta hacia otro modulo que esta en otra carpeta en python 3?
-
Tienes lo siguiente:
carpeta1
|
------__init__.py
|
------archivo1.py
carpeta2
|
------__init__.py
|
------archivo2.pysi quieres desde archivo1.py importar archivo2.py
en archivo1 escribe:
import carpeta2.archivo2
(es lo que yo uso)
o también CREO que se puede usar
from carpeta2 import archivo2
-
-
carpeta 1
------archivo1.py
carpet 2
------archivo2.py
como puedo acceder de una carpeta a otra ????-
Si a eso me rerfiero
-
-
muchas gracias !
-
Muy bueno, pero quisiera saber, que cosas podemos poner dentro de "__init__.py"
Deja una respuesta
Gracias por tus aportes, son de gran ayuda.
http://www.pcpractico.es