es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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.

Comments are closed.