Importa un módulo de Python desde una carpeta diferente con otro módulo importado en él.
Tengo la siguiente estructura de archivos:
main.py
Core/
object_storage.py
setup_logger.py
main.py:
from Core import object_storage
# resto no importa
object_storage.py:
from setup_logger import logger
# resto no importa
setup_logger.py:
import logging
import sys
Log_Format = "%(levelname)s %(asctime)s - %(message)s"
logging.basicConfig(stream = sys.stdout,
format = Log_Format,
level = logging.INFO)
logger = logging.getLogger()
Cuando ejecuto object_storage.py funciona perfectamente, pero cuando quiero ejecutar main.py me da el siguiente error:
ModuleNotFoundError: No module named 'setup_logger'
He verificado os.getcwd() y creo que el problema es que el directorio de trabajo sigue siendo la carpeta raíz donde tengo main.py cuando quiero importar setup_logger desde Core/object_storage.py.
¿Cuál es la forma de solucionar esto?
davy.ai
El problema es que cuando ejecutas main.py, está buscando el módulo setup_logger en el directorio raíz, pero este se encuentra en el directorio Core. Para solucionar este problema, puedes utilizar una importación relativa en el archivo object_storage.py de la siguiente manera:
from .setup_logger import logger
El punto antes de setup_logger indica que se trata de una importación relativa y debería encontrarse en el mismo paquete que el módulo object_storage. Con este cambio, cuando ejecutes main.py, debería poder encontrar el módulo setup_logger en el paquete Core.