Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Yidu en 20 Agosto 2018, 21:17 pm



Título: ¿Ya no es necesario __init__.py en los paquetes [PYTHON 3.xx]
Publicado por: Yidu en 20 Agosto 2018, 21:17 pm
Hola de nuevo  ;)

A dia de hoy no habia usado paquetes con python. Solia importar los modulos dentro de la misma carpeta del script principal y ya me bastaba.

La cosa esta que he visto algunos videos recientes, incluso usando Python 3, y el creador del mismo suele poner __init__.py (que normalmente es un script vacio) dentro de cada paquete. Y claro, yo lo he probado sin poner este archivo y me funciona igual.

Incluso he puesto varios modulos dentro de una paquete (o carpeta) y me los reconoce igualmente. Es decir, se importa el paquete y luego cualquier modulo del mismo.

La sintaxis que utilizo es la normal:

Código
  1. from paquete.modulo_1 import funcion

paquete es un carpeta, modulo_1 uno de los scripts dentro del paquete y funcion dentro del modulo_1

¿Es correcto? ¿Para que poner el __init__.py si me funciona igual?

Saludos!


Título: Re: ¿Ya no es necesario __init__.py en los paquetes [PYTHON 3.xx]
Publicado por: Eleкtro en 20 Agosto 2018, 22:08 pm
¿Para que poner el __init__.py si me funciona igual?

En Python 3.3 se implementaron los espacios de nombres de paquetes implícitos para evitar la creación de los archivos __init__.py en ciertas circunstancias, en el siguiente enlace se explica las circunstancias en las que se sigue necesitando crear los archivos __init__.py:

  • https://stackoverflow.com/a/48804718

...y en la respuesta aceptada tienes toda la información aidicional necesaria.

Saludos.