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.

Error de importación al usar pytest en la terminal.

Acabo de configurar mi nuevo MacBook y tengo problemas de importación al ejecutar mis pruebas de Python.

Obtengo el siguiente error:
ImportError al importar el módulo de prueba ‘/Users/mlatif/Documents/Project/validation/tests/test_rds_config.py’.
Sugerencia: asegúrate de que tus módulos/paquetes de prueba tengan nombres válidos en Python.
Traceback:
/usr/local/Cellar/python@3.9/3.9.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/init.py:127: en import_module
return _bootstrap._gcd_import(name[level:], package, level)
tests/test_rds_config.py:6: en
from main import rds_config
E ModuleNotFoundError: No se encuentra el módulo llamado ‘main’

Ejecutar las mismas pruebas en mi antiguo portátil funciona correctamente. Algunas personas han dicho que necesito hacer algo con mi PYTHONPATH, pero no estoy seguro de qué hacer. He instalado Python 3.9 utilizando Brew.

Además, ejecutar las pruebas en PyCharm presionando el botón de ejecución también funciona correctamente. Por lo tanto, no funciona solo en la terminal.

Estructura de archivos:

  • Proyecto
    • main
    • lambda_function
    • rds_config
    • tests
    • test_lambda_function
    • test_rds_config

Cómo estoy importando:
from main import lambda_function

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está al importar el módulo main. Según la estructura de archivos proporcionada, el módulo main está presente en el directorio padre del directorio tests. Por lo tanto, para importar el módulo main, debes agregar el directorio padre (Project) a tu PYTHONPATH. Puedes hacer esto ejecutando el siguiente comando en tu terminal:

    export PYTHONPATH=/Users/mlatif/Documents/Project:$PYTHONPATH
    

    Esto agregará el directorio Project a tu PYTHONPATH. Después de esto, puedes ejecutar tus pruebas usando el mismo comando:

    pytest --cov-config=.coveragerc --cov=main tests
    

    Esto debería resolver el problema ModuleNotFoundError: No module named 'main'.

    Alternativamente, también puedes modificar tu declaración de importación para mencionar explícitamente el directorio padre:

    from ..main import lambda_function
    

    Esto también debería funcionar sin modificar el PYTHONPATH.

Comments are closed.