【问题标题】:Exception: JavaNotFoundError When Running Tabula-py in a python azure funciton app异常:在 python azure 函数应用程序中运行 Tabula-py 时未找到 Java 错误
【发布时间】:2020-05-17 23:04:21
【问题描述】:

我正在使用 blob 触发器 python azure 函数应用程序从 pdf 中提取数据,并且在使用 tabula py 时出现以下错误。我能够在本地毫无问题地运行它,但是,当我部署该功能时,我收到以下错误:

Result: Failure
Exception: JavaNotFoundError: `java` command is not found from this Python process.Please ensure Java is installed and PATH is set for `java`
Stack:   File "/azure-functions-host/workers/python/3.6/LINUX/X64/azure_functions_worker/dispatcher.py", line 315, in _handle__invocation_request
    self.__run_sync_func, invocation_id, fi.func, args)
  File "/usr/local/lib/python3.6/concurrent/futures/thread.py", line 56, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/azure-functions-host/workers/python/3.6/LINUX/X64/azure_functions_worker/dispatcher.py", line 434, in __run_sync_func
    return func(**params)
  File "/home/site/wwwroot/Assessment/__init__.py", line 21, in main
    pdfTable = tabula.read_pdf(blob_to_read,pages='all',multiple_tables=True)
  File "/home/site/wwwroot/.python_packages/lib/python3.6/site-packages/tabula/io.py", line 322, in read_pdf
    output = _run(java_options, kwargs, path, encoding)
  File "/home/site/wwwroot/.python_packages/lib/python3.6/site-packages/tabula/io.py", line 91, in _run
    raise JavaNotFoundError(JAVA_NOT_FOUND_ERROR)

这是我的代码:

import logging
import azure.functions as func

import io
import re
import os
import tabula


def main(myblob: func.InputStream,blobout: func.Out[str],context: func.Context):
    logging.info(f"--- Python blob trigger function processed blob \n"
                 f"----- Name: {myblob.name}\n"
                 f"----- Blob Size: {myblob.length} bytes")

    inputblob = myblob.read()
    blob_to_read = io.BytesIO(inputblob)

    pdfTable = tabula.read_pdf(blob_to_read,pages='all',multiple_tables=True)

我也尝试过 camelot,但遇到了与 ghostscript 安装相关的并发症。

我正在制定消费计划。任何有关如何解决此问题的帮助将不胜感激。

谢谢。

【问题讨论】:

  • 这个问题怎么样?下面的答案是否解决了您的问题,如果没有,请告诉我有关此问题的最新信息吗?

标签: python azure-devops azure-functions tabula-py


【解决方案1】:

异常:在 python azure 中运行 Tabula-py 时出现 JavaNotFoundError 功能应用程序

正如错误显示:

Exception: JavaNotFoundError: java command is not found from this Python 进程。请确保安装了 Java 并设置了 PATH java

它表明您的代理上没有安装 Java 或没有为 Java 设置 PATH。

所以,你需要检查你是否安装了Java并设置了PATH。

如果没有,您可以尝试创建您的私人代理How to Set Up a Private Agent in Visual Studio Team Services。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    检查tabula-py的要求,它需要java8,假设你的函数环境是python运行时Linux函数并且没有安装Java。

    所以第一个选择是您可以按照Create a function on Linux using a custom container 创建一个带有自定义图像的函数,其中包括您需要的运行时。

    另一个可能的选择是将JVM上传到azure,并在你的函数代码中设置PATH,你可以试试。

    【讨论】:

      【解决方案3】:

      您好,我遇到了同样的问题,无法找到很好的答案,但终于让它工作了,诀窍是在 Azure App Service 的 Ubuntu 服务器上安装 Java。要在 Ubuntu 服务器上安装 Java,您需要通过 SSH 连接到服务器,然后从 https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-18-04 执行以下步骤。我发现 sudo 命令未被识别但设法让它在不需要它的情况下工作(即不需要将它包含在命令中)。

      How to install Java on Ubuntu server on app service

      【讨论】:

      • 或许,您应该解释一下为什么会产生错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      相关资源
      最近更新 更多