Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[tkinter] Importar al programa principal las funciones de otro modulo
#11
El problema es que from directorio import * no importa todos los módulos dentro de ese directorio, sino simplemente todos los objetos dentro del archivo directorio/__init__.py. Lo que generalmente se hace es importar todos los módulos dentro de __init__.py. Por ejemplo, si tu estructura es la siguiente:

Código:
- directorio
   | - __init__.py
   | - modulo1.py
   | - modulo2.py
   | - modulo3.py

Para poder importar los módulos 1-3 usando from directorio import *, deberías poner dentro de __init__.py:

  1. import modulo1
  2. import modulo2
  3. import modulo3


Saludos
Responder
#12
(, 03:12 PM)Francisco escribió: El problema es que from directorio import * no importa todos los módulos dentro de ese directorio, sino simplemente todos los objetos dentro del archivo directorio/__init__.py. Lo que generalmente se hace es importar todos los módulos dentro de __init__.py. Por ejemplo, si tu estructura es la siguiente:

Código:
- directorio
  | - __init__.py
  | - modulo1.py
  | - modulo2.py
  | - modulo3.py

Para poder importar los módulos 1-3 usando from directorio import *, deberías poner dentro de __init__.py:

  1. import modulo1
  2. import modulo2
  3. import modulo3


Saludos

Ostras, ¡MUCHAS GRACIAS!.

Este tema me interesa porque en ningún lado lo explican detalladamente. ¿Todos los directorios/subdirectorios deben tener el archivo __init__.py?.
Supongamos que yo tengo un directorio. /home/Templates/Mi_app

Dentro de Mi_app (Aquí va el módulo principal) hay varios subdirectorios: Centro de control, icons, sounds etc etc y cada uno con módulos distintos.
Es decir esto quedaría:

Código:
Mi_app
|--__init__.py
|--módulo1.py
|--módulo2.py
    |--Centro de Control
        |--__init__.py
        |--módulo1.py
        |--módulo2.py

Para importar todos los objetos, todos los directorios, es decir, absolutamente todo, ¿Cual sería la instrucción?.
¿Habría que meter todos los import de los módulos en su correspondiente __init__.py?
Responder
#13
En las últimas versiones de Python el archivo __init__.py es opcional, pero lo vas a necesitar si querés que una carpeta funcione como un módulo. No obstante, por ejemplo, los módulos dentro de "Centro de Control" no los vas a poder importar porque las carpetas no pueden tener espacios (a menos que lo agregues manualmente a sys.path, pero no es una práctica muy recomendada).

(, 05:36 AM)Myszowor escribió: ¿Habría que meter todos los import de los módulos en su correspondiente __init__.py?

Exactamente.
Responder


Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)