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 tabula.errors.JavaNotFoundError al usar tabula en una función de Google Cloud.

Para mi aplicación estoy utilizando el paquete tabula para convertir un PDF a CSV. La función en la nube que he escrito está en Python 3.7. Lo he escrito en el archivo requirements.txt. Pero estoy obteniendo este error:

Archivo "/layers/google.python.pip/pip/lib/python3.7/site-packages/tabula/io.py", línea 91, en _run
    raise JavaNotFoundError(JAVA_NOT_FOUND_ERROR)
tabula.errors.JavaNotFoundError: No se encuentra el comando `java` en este proceso de Python. Asegúrese de tener Java instalado y de que la variable PATH esté configurada para `java`.

Archivo requirements

tabula-py==1.4.1

main.py

import tabula
df = tabula.read_pdf('/tmp/' + file_id + '.pdf', pages=required_page)[0]
tabula.convert_into('/tmp/' + file_id + '.pdf', '/tmp/' + file_id + '.csv', output_format="csv", pages=required_page, stream=False)

¿Cómo puedo resolver esto? ¿Existe alguna alternativa para esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error sugiere que el comando java no se encuentra en el sistema que ejecuta la función en la nube. Para resolver esto, deberías asegurarte de que Java esté instalado y su ruta esté configurada en las variables de entorno del sistema.

    Alternativamente, puedes usar el parámetro java_options incorporado del paquete tabula-py para especificar la ruta a la Máquina Virtual Java (JVM) instalada.

    Aquí tienes una versión modificada de tu código que establece el parámetro java_options:

    import tabula
    
    java_path = '/ruta/a/java'  # reemplaza con la ruta real a Java
    
    tabula.io.external_command.run([java_path, '-version'], stdout=tabula.io.subprocess.PIPE)
    
    df = tabula.read_pdf('/tmp/' + file_id + '.pdf', pages=required_page, java_options=java_path)[0]
    tabula.convert_into('/tmp/' + file_id + '.pdf', '/tmp/' + file_id + '.csv', output_format="csv", pages=required_page, stream=False, java_options=java_path)
    

    En el ejemplo anterior, java_path debe establecerse con la ruta real al comando java en tu sistema. El método run se utiliza para comprobar que java esté disponible en el sistema.

    Al pasar java_options como parámetro a read_pdf y convert_into, Tabula utilizará la ruta especificada a la JVM al ejecutar la conversión.

Comments are closed.