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.

Script de Python para crear un archivo zip con paquetes externos definidos (como pandas)

¿Existe alguna manera de hacer un script de Python que cree un archivo zip con dependencias definidas?

Algo así como:

create_zip()
for i in ['glob', 'json', 'logging', 'pandas']:
    add_to_zip(i)

Por supuesto, las funciones create_zip y add_to_zip no existen por defecto y me gustaría saber si hay una buena manera de definirlas.

Más adelante, me gustaría usar ese archivo zip como capa en AWS Lambda.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de crear un script de Python que cree un archivo zip con dependencias definidas. Una forma de lograr esto es usar una herramienta como pipenv o virtualenv para crear un entorno virtual con las dependencias requeridas. Luego, use el módulo zipfile incorporado en Python para crear el archivo zip y agregar los archivos requeridos. Aquí hay un ejemplo de cómo se puede hacer esto:

    import os
    import zipfile
    
    def create_zip(dependencies):
        # Cree un entorno virtual con las dependencias requeridas
        os.system(f"pipenv install {' '.join(dependencies)}")
    
        # Cree un archivo zip y agregue los archivos requeridos
        zip_file = zipfile.ZipFile("my_dep_zip", mode="w")
        for root, dirs, files in os.walk(".venv/lib/python3.8/site-packages"):
            for file in files:
                zip_file.write(os.path.join(root, file))
    
        # Cierre el archivo zip y elimine el entorno virtual
        zip_file.close()
        os.system("pipenv --rm")
    
    # Llame a la función con las dependencias requeridas
    create_zip(['numpy', 'pandas'])
    

    Este código usa pipenv para crear un entorno virtual con las dependencias especificadas y luego usa el módulo zipfile para crear un archivo zip que contenga todos los archivos necesarios. Una vez que se crea el archivo zip, se puede cargar como una capa en AWS Lambda.

Comments are closed.