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

文章目录

  • 场景
  • 解决方案
    • Aptfile
    • Buildpacks
      • Dashboard 上手动构建
      • Heroku CLI 终端构建
    • Requirements.txt
    • 提交改变

场景

  • 我使用 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-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 中加入 opencv package 的安装代码
    opencv-python-headless
    

提交改变

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器反向代理

反向代理作用 隐藏服务器信息 -> 保证内网的安全,通常将反向代理作为公网访问地址,web服务器是内网,即通过nginx配置外网访问web服务器内网 举例 百度的网址是:http://www.baidu.com , 现在我通过自己的服务器地…

手机自动化脚本-- 模拟器模拟真机环境过检测

文章目录 安装包目录结构一、安装雷电模拟器9二、新建模拟器并且初始化1. 性能设置2. 其他设置3. 当前配置三、面具1. 安装2. 面具初始化四、修改机型1. 将机型模块安装到模拟器2. 安装机型模块五、修改su问题1. 安装RE管理器2. 删除自带su文件,避免文件冲突六、下载地址额外安…

Linux中使用nmap基本使用以及扫描一组计算机的脚本

nmap扫描一组计算机的脚本 说明 Nmap(Network Mapper)是一个开源的网络探测和安全评估工具。它用于扫描和发现网络上的主机、端口和服务,以及评估网络的安全性。 Nmap具有以下主要功能: 主机发现:Nmap可以通过发送…

unity 调用C++ dll 有类和指针操作

这个在之前unity 调用C dll 操作升级套娃函数调用_天人合一peng的博客-CSDN博客的基础上,但实事时类相互嵌套,非常不好处理。 1 测试直接将main()生成dll程序能运行不。 发现是可以的。 2 那就是想方法把对象或指针的操作的下一级函数直接写到main里面&…

Linux 学习总结(93)—— 实用 shell 脚本汇总

1、检测两台服务器指定目录下的文件一致性 #!/bin/bash ###################################### 检测两台服务器指定目录下的文件一致性 ##################################### #通过对比两台服务器上文件的md5值,达到检测一致性的目的 dir/data/web …

STM32基础知识点总结

一、基础知识点 1、课程体系介绍 单片机概述arm体系结构STM32开发环境搭建 STM32-GPIO编程-点亮世界的那盏灯 STM32-USART串口应用SPI液晶屏 STM32-中断系统 STM32-时钟系统 STM32-ADC DMA 温湿度传感器-DHT11 2.如何学习单片机课程 多听理论、多理解、有问题及时提问 自己多…

ChatGPT助力校招----面试问题分享(十一)

1 ChatGPT每日一题:PCB布线,高速信号线走直角的后果 问题:PCB布线,高速信号线走直角的后果 ChatGPT:对于高速信号线来说,最好避免使用直角布线。直角布线会引入反射和信号损耗,从而导致信号完…

【Python】selenium项目实战:从12306网站获取特定时间段二等座有票的车次

文章目录 一、项目背景二、页面查找1、查询条件2、定位有二等座的元素3、定位有二等座的车次信息4、CtrlF检验xpath查找的车次 三、代码实现 一、项目背景 工具: pythonpycharmselenium 12306网址: https://kyfw.12306.cn/otn/leftTicket/init?linktyp…

【云原生】Docker跨主机网络Overlay与Macvlan的区别

跨主机网络通信解决方案 docker原生的overlay和macvlan 第三方的flannel,weave,calico 1.overlay网络 在Docker中,Overlay网络是一种容器网络驱动程序,它允许在多个Docker主机上创建一个虚拟网络,使得容器可以通过这…

氢辉能源|[4GW]质子交换膜产线投产发布会暨[3MW]PEM电解槽正式交付

2023年7月12日下午,氢辉能源(深圳)有限公司(以下简称氢辉能源)质子交换膜产线投产发布会暨12台50标方3MW电解槽交付仪式在深圳市龙岗区国际低碳城成功举办。 此外,氢辉能源与远景能源、润世华集团、宏洲新能…

【MySQL】MySQL里程碑

个人主页:【😊个人主页】 系列专栏:【❤️MySQL】 文章目录 时间表从产品特性的角度梳理其发展过程中了解MySQL里程碑事件 时间表 从产品特性的角度梳理其发展过程中了解MySQL里程碑事件 1995年,MySQL 1.0发布,仅供内…

2.4 文件与文件系统

文章目录 2.4 文件与文件系统介绍文件的概念文件系统文件操作文件权限和所有权文件路径文件系统管理总结 2.4 文件与文件系统 介绍 在运维工作中,文件和文件系统是非常重要的概念。本文将介绍文件和文件系统的基本概念,以及在运维中常见的文件操作和管…

MongoDB负载均衡集群监控

对负载均衡的集群监控,不仅仅集中在对集群所有的资源、服务等进行监控,还要兼顾整体逻辑。以MongoDB高可用负载均衡集群为例,对逻辑层面的监控,就是模拟用户行为,访问集群数据,判断运行状态是否正常。 Mong…

opencv 图像基础处理_灰度图像

opencv 学习2_灰度图像 二值图像表示起来简单方便,但是因为其仅有黑白两种颜色,所表示的图像不够细腻。如果想要表现更多的细节,就需要使用更多的颜色。例如,图 2-3 中的 lena 图像是一幅灰度图像, 它采用了更多的数值…

第八十五回:如何使用字体图标

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了Icon这种Widget,本章回中将介绍 如何使用字体图标。闲话休提,让我们一起Talk Flutter吧。 概念介绍 本章回中介绍的字体图标是指Icon中使用特殊的字体来充当图标,字体图标可以看作…

极简websocket实时聊天

在线体验链接:http://47.242.53.5:888/ 项目git地址:https://gitee.com/xiao-ming-1999/websocket-server.git 实现步骤: 在前端创建WebSocket连接:在Vue组件中使用vue-native-websocket库或原生的WebSocket API来创建WebSocket…

简单线性回归评估指标+R Squared

使得每一个数据集尽可能的小 均方误差MSE:(平方和取平均值) 均方根误差RMSE:(平方和取平均值开根号):平均误差值 平均绝对误差MAE:(绝对值取平均)&#xff1a…

Vue3通透教程【十八】TS为组件的props标注类型

文章目录 🌟 写在前面🌟 回顾defineProps的基础写法🌟 defineProps的TS写法🌟 withDefaults方法🌟 拓展🌟 写在最后 🌟 写在前面 专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 …

内网安全:内网穿透详解

目录 内网穿透技术 内网穿透原理 实验环境 内网穿透项目 内网穿透:Ngrok 配置服务端 客户端配置 客户端生成后门,等待目标上线 内网穿透:Frp 客户端服务端建立连接 MSF生成后门,等待上线 内网穿透:Nps 服…

【Linux】- Linux 磁盘分区、挂载

Linux 磁盘分区、挂载 1.1 Linux 分区1.2 硬盘说明1.3 磁盘情况查询 1.1 Linux 分区 原理介绍 Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系…