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/
