[Python-es] Importar módulos mediante un fichero __init__.py

Sergio Fernández sergio en wikier.org
Mie Mayo 9 17:51:04 CEST 2012


Perfecto, Dani, casi siempre hay varias soluciones para todo.

Solo un detalle: lo que apuntas d eimportar cosas en los __init__.py,
suele hacerse para abreviar rutas de importacion.

Suponiendo 'mimodulo' asi:

  mimodulo
      __init__.py
      submodulo
          __init__.py
          foo.py

Si los __init__.py estuviera vacios, un usuario de ese modulo deberia
utilizar algo como:

from mimodulo.submodulo import foo

A menudo, para simplificar o para que detalles de organizacion interna
de una biblioteca no trascienan a los usuario, se pone imports en los
__init__.py

Por ejemplo, si en el primer __init__.py pusiera esta linea de codigo:

from submodulo import foo

Un usuario podr'ia importar foo d ela siguiente manera:

from mimodulo import foo

Espero que te haya ayudado mas alla d ehaberte liado mas ;-)

Un saludo,

2012/5/9 Dani Muñoz <conan.srk en gmail.com>:
> Muchas gracias, chicos. Ya está solucionado. En primer lugar probé lo
> que me dijo Sergio Fernández, puse esas dos líneas de código al
> principio de mainf.py, pero al ejecutarlo no me reconocía las
> funciones que iban contenidas en él (como si no las hubiera definido,
> ni las hubiera importado de ningún sitio, nada), pero fijo que hice
> algo mal. Más tarde intenté el método de Juan José Gómez, ordenando
> los ficheros tal y como él ha hecho, importé todo en __init__.py y en
> mainf.py escribí "from tools import * " y así solucioné mi conflicto.
>
> Aun así no estoy satisfecho del todo, porque para solucionarlo creo
> que he dependido más de la manera de distribuir los ficheros (poniendo
> el archivo principal en la raíz, etc.), que de solo escribir el código
> adecuado en los scripts.
>
> Chema, la razón de utilizar __init__.py es solo la de aprender. Soy
> nuevo en esto de Python, y leyendo proyectos de código libre de otras
> personas escritos también en Python me había fijado en que en todas
> partes había un fichero __init__.py que solo importaba cosas y que
> aparentemente no hacía nada más, por eso quiero aprender bien su
> funcionamiento, porque el día que esté en condiciones de hacer mis
> propios programas seguro que también tendré que tener destreza en su
> manejo.
>
> Bueno, jeje, no me lío más. Muchas gracias otra vez a los tres :-)
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/



-- 

Sergio Fernández <sergio en wikier.org>


Más información sobre la lista de distribución Python-es