Heroku 部署有关 opencv 的 Django 后端应用(pdf2docx)

场景

  • 我使用 heroku 部署了一个 Django 后端项目,里面使用了 pdf2docx 库进行 pdfdocx

  • 这个库底层调用了 opencv 的一些操作,因此在部署的时候出了这个问题:

    ImportError: libGL.so.1: cannot open shared object file: No such file or directory
    
  • 表示你的应用试图加载一个动态链接库(shared library)libGL.so.1,但是在运行环境中没有找到。libGL.so.1OpenGL 库,通常由显卡驱动提供。

  • 这个问题发生在试图导入 cv2(OpenCV)模块时。OpenCV 依赖于某些动态链接库,包括 libGL.so.1

解决方案

Aptfile

  • Heroku 默认的运行环境可能没有包含所有 OpenCV 需要的库。你需要自定义你的 Heroku 构建包来包含这些缺失的库。这可以通过创建一个 Aptfile 来实现,Aptfile 列出了你的应用所需的所有 Debian 包。
    • 在你的项目根目录创建一个名为 Aptfile 的文件。
    • 在这个文件中添加以下行:
    libgl1-mesa-glx
    
    libsm6
    libxext6
    libxrender-dev
    libglib2.0-0
    

Buildpacks

  • 首先在 Heroku 设置中添加下面两个 buildpacks:

    • heroku/python
    • https://github.com/heroku/heroku-buildpack-apt
  • 构建 buildpacks 的方式有两种:

Dashboard 上手动构建

  • 登录到你的 Heroku 账户并打开你的应用。

  • 在你的应用页面,点击 “Settings” 标签。

  • 滚动到 “Buildpacks” 部分,然后点击 “Add buildpack”。

  • 在弹出的对话框中,输入 buildpack URL 或者类型:

    • heroku/python
    • https://github.com/heroku/heroku-buildpack-apt
  • 然后点击 “Save changes”。

Heroku CLI 终端构建

  • 安装 Heroku CLI(如果尚未安装)。

  • 命令行登录:

    heroku login
    
  • 添加 buildpack 到你的应用:

    heroku buildpacks:add --index 1 heroku/python --app YOUR_APP_NAME
    heroku buildpacks:add --index 2 https://github.com/heroku/heroku-buildpack-apt --app YOUR_APP_NAME
    
  • 这里的 YOUR_APP_NAME 是你在 Heroku 上通过 new app 按键创建的 application 的名称

Requirements.txt

  • 在 requirements.txt 中加入 opencv package 的安装代码
    opencv-python-headless
    

提交改变

猜你喜欢

转载自blog.csdn.net/qq_42902997/article/details/131684347