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?
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 paquetetabula-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
:En el ejemplo anterior,
java_path
debe establecerse con la ruta real al comandojava
en tu sistema. El métodorun
se utiliza para comprobar quejava
esté disponible en el sistema.Al pasar
java_options
como parámetro aread_pdf
yconvert_into
, Tabula utilizará la ruta especificada a la JVM al ejecutar la conversión.