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.

Importación de módulos a Greengrass Containerized Lambda en Python para Raspberry Pi OS.

Trabajé en un script de Python 3.8 que incluye sqlite3 y serial. Funcionó bien al ejecutarlos en una instalación básica del sistema operativo Raspi OS. Sin embargo, cuando intenté usarlos en un lambda contenerizado, obtengo estos errores:

lambda_runtime.py:141, Error al importar la función controladora "main.function_handler" debido a una excepción: No se encuentra el módulo 'serial'

y

lambda_runtime.py:141, Error al importar la función controladora "main.function_handler" debido a una excepción: No se encuentra el módulo '_sqlite3'

La pregunta es, ¿cómo puedo importar estos módulos junto con mi código? Parece absurdo que el SDK de Greengrass utilice sqlite3, pero no pueda usarlos en mi propia función lambda.

¿Alguna ayuda? Puedo proporcionar más detalles si es necesario.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para importar los módulos requeridos, debes empacarlos junto con tu código y las dependencias. A continuación, te mostramos los pasos que puedes seguir:

    1. Crea un paquete de implementación que incluya tu script de Python, los módulos requeridos (serial y sqlite3) y cualquier otra dependencia.
    2. Sube el paquete de implementación a tu función Lambda.
    3. Establece la variable de entorno PYTHONPATH con la ubicación de tu paquete de implementación en el entorno de Lambda.
    4. Actualiza el controlador de tu función Lambda para que haga referencia a la ruta del módulo correcto.

    Por ejemplo, si tu paquete de implementación se llama “mylambda.zip” y se encuentra en el directorio raíz de tu función Lambda, puedes establecer PYTHONPATH en “/var/task/mylambda.zip” en el entorno de Lambda.

    En cuanto al uso de sqlite3 en el SDK de AWS IoT Greengrass, es cierto que se utiliza internamente, pero esto no significa que tengas acceso directo a él en tu función Lambda. Aún así, debes incluir el módulo sqlite3 en tu paquete de implementación e importarlo en tu código.

    Si necesitas más ayuda, por favor proporciona más detalles sobre tu entorno de implementación y los pasos que ya has realizado.

Comments are closed.