当我尝试将我的应用程序部署到Heroku时,收到以下错误:
File" /app/project/app/object_detection/object_detection_service.py" ;,第5行,in 文件" / app / project / app / _ _init __。py",第22行,in 文件" /app/project/app/views.py" ;,第6行,in 导入cv2 来自.cv2 import * 文件" /app/.heroku/python/lib/python3.6/site-packages/cv2/_ _init __。py",第4行,in 2018-03-24T20:40:55.986945 + 00:00 app [web.1]:ImportError:libSM.so.6:无法打开共享对象文件:没有这样的文件或目录
OpenCV无法找到libsm目录,但此应用程序在本地正确运行。我尝试过使用特定的buildpack,但是那些似乎找不到我的site-packages
文件夹。
如何在Heroku上使用openCV(python)?
答案 0 :(得分:7)
您可以利用heroku-buildpack-apt安装这些库。
在撰写本文时,我已通过以下步骤成功完成了for this repo(托管在here上)的工作:
答案 1 :(得分:5)
使用opencv-python-headless,因为它脱离了libSM6依赖关系。 签出this。
if test "x${XMLCATALOG}" != "x" -a "x$have_xmlcatalog_file" = "xyes"; then
DOCBOOK_XSL_URI="http://docbook.sourceforge.net/release/xsl/current"
DOCBOOK_XSL_PATH="manpages/docbook.xsl"
MANPAGE_DOCBOOK_XSL=$(${XMLCATALOG} ${XML_CATALOG_FILE} ${DOCBOOK_XSL_URI}/${DOCBOOK_XSL_PATH} | sed -n 's|^file:/\+|/|p;q')
fi
答案 2 :(得分:2)
新的 Aptfile 和 requirements.txt 属性对我有用:
from something import returnSomething
libsm6
libxrender1
libfontconfig1
libice6
记住在设置中包含 Buildpack。
opencv-python-headless==4.2.0.32
答案 3 :(得分:0)
对于Windows用户,在遵循上述@Lelo建议时,请务必在Aptfile中使用unix样式行结尾
答案 4 :(得分:0)
参考Lelo关于库安装的答案,OpenCV更改了其所需的库(在撰写本文时为4.4.0)。
因此,要获取最新版本,只需在Aptfile中使用python-opencv
即可,而不是其他库。
答案 5 :(得分:0)
您必须安装一些依赖项,因为 Heroku 不会自动为您安装。
libsm6
libxrender1
libfontconfig1
libice6
注意:Aptfile 不应有任何 .txt 或任何其他扩展名。就像 档案
将编辑好的代码推送到 Github
在heroku仪表板中,
转到您的应用 --> 设置 --> 构建包 --> 添加构建包 --> https://github.com/heroku/heroku-buildpack-apt.git
复制并粘贴此链接 --> 添加构建包
部署您的应用
答案 6 :(得分:-1)
你应该安装libsm6和libxext6, 运行
$ sudo apt-get install -y libsm6 libxext6
但是,由于heroku没有提供超级用户访问权限,因此您无法对其进行排序。您可以选择其他提供商,例如Google Cloud Platform或AWS
cmiiw