項(xiàng)目場(chǎng)景及問(wèn)題描述
在不聯(lián)網(wǎng)的服務(wù)器上的Docker容器內(nèi)運(yùn)行Python程序,Python版本是3.8版本。安裝的opencv-python是這一版:opencv_python-4.7.0.68-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
程序部分 import cv2 出現(xiàn)報(bào)錯(cuò):ImportError: libGL.so.1: cannot open shared object file: No such file or directory
具體如下:
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.8/dist-packages/cv2/__init__.py", line 181, in <module>
bootstrap()
File "/usr/local/lib/python3.8/dist-packages/cv2/__init__.py", line 153, in bootstrap
native_module = importlib.import_module("cv2")
File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
原因分析:
出現(xiàn)這種情況的原因主要是因?yàn)槭褂肈ocker構(gòu)建應(yīng)用時(shí)缺少cv2的依賴??梢酝ㄟ^(guò)安裝所需的附加依賴項(xiàng)來(lái)解決此錯(cuò)誤。
解決方案:
方案一:
通過(guò)安裝 opencv-python-headless
,它會(huì)安裝所有相關(guān)的依賴項(xiàng),解決這種報(bào)錯(cuò)。opencv-python-headless 包含沒(méi)有外部依賴項(xiàng)的預(yù)編譯二進(jìn)制輪(除了numpy),并且適用于 Docker 等無(wú)頭環(huán)境。以我使用的版本為例,
opencv-python安裝的版本如下:opencv_python-4.7.0.68-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
因此安裝了對(duì)應(yīng)版本的 opencv-python-headless:opencv_python_headless-4.7.0.68-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
解決了報(bào)錯(cuò)問(wèn)題。該方案對(duì)不聯(lián)網(wǎng)環(huán)境比較友好,只需要有對(duì)應(yīng)安裝包即可。
方案二:
安裝依賴項(xiàng) libgl1
。
用如下指令:
apt-get update && apt-get install libgl1
方案三:
安裝cv2依賴。
只需將以下代碼添加到您的行DockerFile中即可解決此問(wèn)題。
RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6 -y
可確保更新軟件包并安裝運(yùn)行所需的其他軟件包c(diǎn)v2。
方案四:
安裝 mesa-libGL.x86_64
。
yum install mesa-libGL.x86_64
參考:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-643445.html
Importerror: libgl.so.1: cannot open shared object file: no such file or directory
ImportError: libGL.so.1: cannot open shared object file文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-643445.html
到了這里,關(guān)于ImportError: libGL.so.1: cannot open shared object file: No such file or dir...解決Python import cv2報(bào)錯(cuò)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!