如何将OpenCV与Heroku配合使用

ufj5ltwl  于 2022-11-13  发布在  其他
关注(0)|答案(9)|浏览(181)

当我尝试将应用程序部署到Heroku时,收到以下错误:

File "/app/project/app/_ _init__.py", line 22, in <module>
File "/app/project/app/views.py", line 6, in <module>
import cv2
from .cv2 import *
File "/app/.heroku/python/lib/python3.6/site-packages/cv2/_ _init__.py", line 4, in <module>
2018-03-24T20:40:55.986945+00:00 app[web.1]: ImportError: libSM.so.6: cannot open shared object file: No such file or directory```

OpenCV无法找到libsm目录,但是这个应用程序在本地正确运行。我已经尝试使用特定的构建包,但是那些似乎没有找到我的site-packages文件夹。
如何在Heroku上使用openCV(python)?

o7jaxewo

o7jaxewo1#

您可以利用heroku-buildpack-apt安装这些缺少的库。
在写这篇文章的时候,我已经成功地完成了for this repo,步骤如下:
1.将heroku-buildpack-apt添加到Heroku平台上的构建包中
1.创建一个名为Aptfile的文件,并添加以下库:

libsm6
libxrender1
libfontconfig1
libice6

(one)。例如here

编辑:在OpenCV的更新版本中,您只需要在Aptfile中列出python-opencv,如docs中所示。

sycxhyv7

sycxhyv72#

使用opencv-python-headless,因为它不依赖于libSM 6。请检查this
添加以下行your requirements.txt并删除旧的open-cv条目:

opencv-python-headless==4.2.0.32
xwmevbvl

xwmevbvl3#

新的Aptfile和requirements.txt属性对我很有用:

在Apt文件中

libsm6
libxrender1
libfontconfig1
libice6

要求. txt中的####

opencv-python-headless==4.2.0.32

请记住在设置中包含Buildpack。

https://github.com/heroku/heroku-buildpack-apt
2skhul33

2skhul334#

您必须安装一些依赖项,因为Heroku不会自动为您安装。
1.在项目目录中添加***Aptfile***,并添加以下文件

  • libsm 6语言
  • 库渲染器1
  • 库字体配置1
  • 自由6

注意:Aptfile不应该有任何.txt或任何其他扩展名。就像Procfile一样
1.将编辑后的代码推送到Github
1.在heroku Jmeter 板中,
后藤您的应用程序--〉设置--〉构建包--〉添加构建包--〉* https://github.com/heroku/heroku-buildpack-apt.git *
复制并粘贴此链接--〉添加构建包
1.部署应用程序

vybvopom

vybvopom5#

对于Windows用户,当遵循上面的@Lelo建议时,请确保在Aptfile中使用unix样式的行尾

sg3maiej

sg3maiej6#

参考Lelo关于库的安装的回答,OpenCV已经改变了他们所需的库(在写这篇文章的时候是4.4.0)。
因此,要获得最新的库,您只需要Aptfile中的python-opencv,而不是其他库。
这被称为Install OpenCV-Python in Ubuntu

vzgqcmou

vzgqcmou7#

在我的例子中,我遇到了类似ImportError: libSM.so.6的错误,在这种情况下,需要将libsm1(全部小写)添加到aptfile中,它工作了。

2mbi3lxu

2mbi3lxu8#

用这个吧,我用过了.

pip install opencv-contrib-python
lf5gs5x2

lf5gs5x29#

您应该安装libsm6和libxext6,并运行

$ sudo apt-get install -y libsm6 libxext6

但是,由于heroku不提供root访问权限,所以您不能这样做。您可以选择其他提供商,如Google Cloud Platform或AWS
中央情报局

相关问题