场景
-
我使用 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-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 到你的应用:文章来源:https://www.toymoban.com/news/detail-570652.html
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 的名称文章来源地址https://www.toymoban.com/news/detail-570652.html
Requirements.txt
- 在 requirements.txt 中加入
opencv
package 的安装代码opencv-python-headless
提交改变
到了这里,关于Heroku 部署有关 opencv 的 Django 后端应用(pdf2docx)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!