Google+ Seguidores

sábado, 22 de junio de 2013

__init__.py en python - Que es y como funciona

    18

__init__.py en Python
__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

18 comentarios:
Write comentarios
  1. Gracias por tus aportes, son de gran ayuda.
    http://www.pcpractico.es

    ResponderEliminar
    Respuestas
    1. Francisco: me alegro te gusten los artículos que publico. Gracias

      Eliminar
  2. Verdaderamente que son cortos y sencillos de entender, me gusta mucho el formato que le das a las explicaciones..

    ResponderEliminar
    Respuestas
    1. Me alegro mucho de que te gusten los artículos. Saludos

      Eliminar
  3. Respuestas
    1. Me alegro te guste Betty. Gracias por tu comentario

      Eliminar
  4. Muy buenos los artículos, sencillos, fácil de entender y práticos, gracias por compartir tus aprendizajes/conocimientos.

    ResponderEliminar
  5. al fin entendi que es el __init__.py gracias

    ResponderEliminar
  6. 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 :)

    ResponderEliminar
    Respuestas
    1. Añade algo como:
      import sys
      sys.path.append('/home/user/lugardelgenerador')
      antes de hacer el
      import generador.ui

      Eliminar
    2. Añade algo como:
      import sys
      sys.path.append('/home/user/lugardelgenerador')
      antes de hacer el
      import generador.ui

      Eliminar
  7. Muy clara la explicación muchas gracias!!!

    ResponderEliminar
  8. Muchas gracias por tu explicación me aclaró mucho!

    ResponderEliminar
    Respuestas
    1. Hola Nico, gracias a ti por visitar el blog!!! Saludos

      Eliminar
  9. Muchas gracias, fue de gran ayuda la información.

    ResponderEliminar
    Respuestas
    1. Gracias a ti Anilina por visitar el blog. Saludos

      Eliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

© 2014 Mi diario Python. Designed by Bloggertheme9 | Distributed By Gooyaabi Templates
Powered by Blogger.