Módulo vs. Paquete?


140

Siempre que lo hago, from 'x' import 'y'me preguntaba cuál se considera el 'módulo' y cuál es el 'paquete', y por qué no es al revés.


1
Con respecto a por qué no es al revés, consulte stackoverflow.com/questions/3600352/…

1
Yo, por mi parte, estoy agradecido por esta pregunta, porque la respuesta es concisa y proporciona el conocimiento exacto necesario. La documentación está muy bien, pero es detallada y contiene mucha más información de la que pedía el OP, y ciertamente más de lo que necesitaba. Solo quería una respuesta a esa pregunta específica, y la respuesta a continuación es exactamente lo que quería. Muchos de nosotros simplemente no necesitamos respuestas tan formales o profundas.
Teekin

Un concepto relacionado a conocer - Clases versus módulos en Python
RBT

Respuestas:


192

Un módulo de Python es simplemente un archivo fuente de Python, que puede exponer clases, funciones y variables globales.

Cuando se importa desde otro archivo fuente de Python, el nombre del archivo se trata como un espacio de nombres.

Un paquete de Python es simplemente un directorio de módulos Python.

Por ejemplo, imagine el siguiente árbol de directorios en /usr/lib/python/site-packages:

mypackage/__init__.py <-- this is what tells Python to treat this directory as a package
mypackage/mymodule.py

Entonces harías:

import mypackage.mymodule

o

from mypackage.mymodule import myclass

Ajá, así que cuando dices que el nombre del archivo se trata como un espacio de nombres, ¿harías algo así? "mymodule.var1" para el primer caso, o "myclass.var1" para el segundo?
Dark Templar

1
No exactamente. El paquete todavía cuenta como parte del espacio de nombres. Si desea hacer lo que dijo, debe hacerlo desde mypackage import mymodule.
Yam Marcovic

Puede ser útil agregar algo sobre los paquetes de espacios de nombres, para los cuales el código no necesariamente debe aparecer en el mismo árbol de directorios.
holdenweb

@holdenweb Nunca usé los diferentes mecanismos involucrados allí directamente, por lo que no es un experto. Si proporciona una explicación detallada al respecto en una nueva respuesta, me referiré a la mía.
Yam Marcovic

Probablemente sea un poco esotérico para valer la pena, en retrospectiva
holdenweb
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.