【问题标题】:heroku poppler buildpack error "libpng12.so.0: cannot open shared object file: No such file or directory"heroku poppler buildpack 错误“libpng12.so.0:无法打开共享对象文件:没有这样的文件或目录”
【发布时间】:2021-05-26 08:29:12
【问题描述】:

我正在尝试使用 pdf2image 库,特别是 convert_from_bytes 方法来使用 pytesseract 将 pdf 转换为 txt 文件。我的应用程序在本地运行,但我想将应用程序部署到 heroku。我尝试将 python-poppler 添加到我的 pipfile 中,但在部署期间它无法下载。我一直在尝试使用 buildpack https://github.com/survantjames/heroku-buildpack-poppler.git,但是当我尝试使用该应用程序时,我在日志中收到此错误。

2021-02-24T02:02:07.068105+00:00 app[web.1]: pages = convert_from_bytes(file,500)
2021-02-24T02:02:07.068106+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/pdf2image/pdf2image.py", line 270, in convert_from_bytes
2021-02-24T02:02:07.068124+00:00 app[web.1]: return convert_from_path(
2021-02-24T02:02:07.068131+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/pdf2image/pdf2image.py", line 97, in convert_from_path
2021-02-24T02:02:07.068132+00:00 app[web.1]: page_count = pdfinfo_from_path(pdf_path, userpw, poppler_path=poppler_path)["Pages"]
2021-02-24T02:02:07.068132+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/pdf2image/pdf2image.py", line 471, in pdfinfo_from_path
2021-02-24T02:02:07.068133+00:00 app[web.1]: raise PDFPageCountError(
2021-02-24T02:02:07.068133+00:00 app[web.1]: pdf2image.exceptions.PDFPageCountError: Unable to get page count.
2021-02-24T02:02:07.068134+00:00 app[web.1]: pdfinfo: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory

如何在 heroku 上安装 poppler 并在我的应用程序中工作?谢谢!

【问题讨论】:

    标签: python heroku poppler poppler-utils


    【解决方案1】:

    解决方案 1:

    查找哪些包包含libpng12.so.0:
    https://packages.debian.org/search?lang=en&suite=jessie&arch=i386&mode=filename&searchon=contents&keywords=libpng12.so.0

    这是 libpng12-0:
    https://packages.debian.org/en/jessie/libpng12-0

    libpng 是一个实现读取和写入 PNG(便携式网络图形)格式文件接口的库。

    正是您正在做的事情(您正在从 pdf 创建图像)。这是您的 Poppler buildpack 所需的依赖项。

    您已经成功地安装了 Python buildpack 以及您的 Poppler buildpack。您需要添加第三个 buildpack,首先安装 Poppler 的依赖项。

    您可以使用 Apt 构建包:https://github.com/heroku/heroku-buildpack-apt
    在那里你指定一个Aptfile,内容为libpng12-0

    然后是关于的错误信息

    2021-02-24T02:02:07.068134+00:00 app[web.1]: pdfinfo: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory
    

    应该没了。可能会弹出有关您以相同方式解决的其他依赖项的新错误。


    解决方案 2:

    或者你只是修复 Poppler buildpack:https://github.com/survantjames/heroku-buildpack-poppler

    正如您在他们创建自述文件时所看到的那样,它是针对 Cedar-14 的。此堆栈不再可用。您可以尝试使其与 Heroku-20 堆栈兼容。

    compile 中,您必须指示它安装缺少的依赖项。

    Here 你可以看到 Calibre 的依赖项是如何安装的。

    如果问题不是依赖问题而是安装 Poppler 本身解决方案 1 将不起作用。


    解决方案 3:

    可能已经有支持 Heroku-20 堆栈的 Poppler buildpack。您尝试的 Poppler buildpack 已有 5 年历史。有许多第三方 Poppler buildpacks,例如this one 刚一岁多一点。
    您必须尝试一下。


    我不知道哪种解决方案是正确的。您将不得不尝试一下。 例如。解决方案 3 目前可能不可用。 Heroku-20 堆栈是新的,人们可能尚未使其与新的 Heroku 堆栈兼容。也许我链接的 buildpack 是 Heroku-18 堆栈的解决方案。

    解决方案 2 始终有效,但需要了解一些构建包的工作原理以及它们的创建方式。这是最“复杂”的解决方案,也是最优雅的解决方案。

    解决方案 1 可能有效,但不是必需的,而且更容易修复。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-23
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多