Lo normal es colocar el archivo principal en la raiz y el resto de
ficheros, modulos,... en su misma carpeta o en subdirectorios, algo como:
/proyecto
main.py
otroarchivo.py
tools/
__init__.py
addsubt.py
muldiv.py
fileread.py

Así main verá tanto el contenido de otro archivo como los archivos del
directorio tools. Si no existiera el archivo __init__.py no se podría
importar nada desde main de ese directorio. La función de añadir los
paquetes importados en el __init__ es para configurar el comando de
importación global:

from tools import *
>

En ese caso se importará todo, o si __init__.py tiene contenido lo que
hayas puesto en el.

Para importar de la forma:

import tools
>

no hace falta añadir nada al archivo __init__.py.


El 9 de mayo de 2012 15:09, Dani Muñoz <[email protected]> escribió:

> Hola,
>
> Tengo una duda con respecto al funcionamiento de los ficheros
> __init__.py. Digamos que estoy haciendo un "mini-proyecto" en Python
> en el que necesito importar tres módulos (cada uno de los cuales es un
> fichero .py) a otro script, que es el principal (el que se ejecutará
> al final).
>
> Jerárquicamente tengo los ficheros distribuidos de la siguiente manera:
>
> +-- PRUEBASmod/                       -- Este es el directorio que
> contiene todo mi proyecto.
>     |
>    +-- addsubt.py
>    +-- multdiv.py
>    +-- fileread.py                            -- Éste y los dos
> anteriores son los módulos que quiero importar posteriormente.
>    +-- __init__.py                           -- FIchero vacío.
>    +-- promain/                              -- Subdirectorio que
> contiene el script principal.
>         |
>         +-- __init__.py                      -- Enseguida detallaré
> el contenido de este fichero.
>         +-- mainf.py                         -- Y finalmente este es
> el script principal.
>
> Quiero importar los módulos addsubt, multdiv y fileread en mainf.py.
> Para este menester tengo entendido que he de utilizar un archivo
> __init__.py (de otra manera no encontraría los módulos, ya que tienen
> que estar en el mismo directorio que mainf.py). Leyendo la
> documentación de Python he entendido que lo que hace __init__.py es
> "convertir" un simple directorio (entendido como una simple carpeta
> que contiene los ficheros) a otro módulo (paquete) de Python que a su
> vez contiene otros módulos, que son los que yo quiero importar al
> final.
>
> Dentro de la carpeta PRUEBASmod he creado el fichero __init__.py, que
> es el que debería hacer que PRUEBASmod se comportara más adelante como
> un módulo más que contiene a otros módulos, y dentro de la carpeta
> 'promain' he creado otro __init__.py con el siguiente contenido:
>
> from PRUEBASmod import addsubt
> from PRUEBASmod import multdiv
> from PRUEBASmod import fileread
>
> Pero aun así, cualquier cosa que importe en mainf.py que esté fuera de
> su directorio (la carpeta promain) siempre termina en el siguiente
> error cuando lo ejecuto:
>
> dani@dani-desktop:~/mipython/PRUEBASmod/promain$ python mainf.py
> Traceback (most recent call last):
>  File "mainf.py", line 3, in <module>
>    import PRUEBASmod
> ImportError: No module named PRUEBASmod
>
> En este caso había importado el módulo PRUEBASmod en mainf.py y no me
> lo reconoce. Pero aunque importe los addsubt, muldiv y fileread por
> separado, me sigue saltando un ImportError.
>
> ¿Dónde me estoy equivocando?
>
> Gracias de antemano,
>
> Dani
> _______________________________________________
> Python-es mailing list
> [email protected]
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a