Heroku部署OpenCV报错libICE.so.6缺失的解决求助
解决Heroku部署OpenCV时
libICE.so.6缺失的问题 我来帮你搞定这个Heroku部署的坑!你遇到的ImportError: libICE.so.6: cannot open shared object file: No such file or directory报错,本质是Heroku的运行环境里缺了OpenCV依赖的X11系统库——libICE,哪怕你代码里没用到OpenCV的GUI功能,默认的opencv-python包也会带这些依赖。
下面是具体的解决步骤,亲测有效:
1. 补全Aptfile里的系统库
你的Aptfile里已经加了一些OpenCV需要的库,但刚好漏了libICE对应的Debian包libice6。把Aptfile改成下面这样:
tesseract-ocr tesseract-ocr-all libsm6 libxext6 libxrender-dev libice6
另外提一句:你原来加的python-qt4在Python 3.6环境里基本没用,而且Qt4已经过时了,如果你的代码没用到它,建议直接删掉,减少不必要的依赖。
2. (强烈推荐)换成无GUI版的OpenCV包
默认的opencv-python带了一堆GUI相关的组件,服务器环境完全用不上,换成opencv-python-headless这个无GUI版本,能从根源减少这类系统库依赖问题:
- 打开你的
requirements.txt,把opencv-python替换成opencv-python-headless:
flask pytesseract opencv-python-headless
3. 重新部署到Heroku
改完上面两个文件后,提交代码重新部署就行:
git add requirements.txt Aptfile git commit -m "Fix OpenCV dependencies on Heroku" git push heroku main
这样操作完,应该就能顺利跑起来了,既补了缺失的系统库,又换成了更适合服务器的OpenCV版本,一举两得~
内容的提问来源于stack exchange,提问作者Marco Ceccon
相关产品推荐
相关产品推荐

