¿Cómo funcionan las importaciones relativas implícitas en Python?
Supongamos que tengo los siguientes archivos,
pkg/
pkg/__init__.py
pkg/main.py # import string
pkg/string.py # print("Package's string module imported")
Ahora si corromain.py
, dice"Package's string module imported"
.
Esto tiene sentido y funciona según esta declaración en esteenlazar:
"primero buscará en el directorio del paquete"
Suponga que modifiqué ligeramente la estructura del archivo (agregué un directorio central):
pkg/
pkg/__init__.py
plg/core/__init__.py
pkg/core/main.py # import string
pkg/string.py # print("Package's string module imported")
Ahora si corropython core/main.py
, carga el incorporadostring
módulo.
También en el segundo caso, si tiene que cumplir con la declaración "primero buscará en el directorio del paquete " no debería cargar el localstring.py
porquepkg
es el "directorio del paquete"?
Mi sentido del término "directorio de paquetes" esespecíficamente elcarpeta raíz de uncolección de carpetas con__init__.py
. Entonces en este caso,paquete es el "directorio del paquete". Es aplicable amain.py
y también archivos en subdirectorios comocore/main.py
porque es parte de este "paquete".
¿Es esto técnicamente correcto?
PD: lo que sigue después#
en el fragmento de código se encuentra el contenido real del archivo (sin espacios iniciales).