文章目录
- 场景
- 解决方案
- Aptfile
- Buildpacks
- Dashboard 上手动构建
- Heroku CLI 终端构建
 
- Requirements.txt
- 提交改变
 
场景
-  我使用 heroku 部署了一个 Django 后端项目,里面使用了 pdf2docx库进行pdf转docx
-  这个库底层调用了 opencv的一些操作,因此在部署的时候出了这个问题:ImportError: libGL.so.1: cannot open shared object file: No such file or directory
-  表示你的应用试图加载一个动态链接库(shared library) libGL.so.1,但是在运行环境中没有找到。libGL.so.1是OpenGL库,通常由显卡驱动提供。
-  这个问题发生在试图导入 cv2(OpenCV)模块时。OpenCV依赖于某些动态链接库,包括libGL.so.1。
解决方案
Aptfile
- Heroku 默认的运行环境可能没有包含所有 OpenCV需要的库。你需要自定义你的Heroku构建包来包含这些缺失的库。这可以通过创建一个Aptfile来实现,Aptfile列出了你的应用所需的所有Debian包。- 在你的项目根目录创建一个名为 Aptfile 的文件。
- 在这个文件中添加以下行:
 libgl1-mesa-glxlibsm6 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 中加入 opencvpackage 的安装代码opencv-python-headless