导入cv2时遇ImportError问题求助(OSX 10.10.5+Python3.6环境)
解决OS X 10.10.5下Python3.6导入cv2的动态库加载错误
我之前在旧版OS X上踩过完全一样的坑!你遇到的ImportError: dlopen... reason: image not found本质是pip安装的预编译opencv-python包是针对更高版本macOS编译的,而OS X 10.10.5的CoreImage框架版本不兼容,导致动态链接库无法正常加载。下面是亲测有效的解决步骤:
步骤1:卸载现有冲突的OpenCV包
先把pip和Homebrew装的OpenCV都清干净,避免版本冲突:
# 卸载pip安装的opencv-python及相关包 pip uninstall -y opencv-python opencv-contrib-python # 卸载Homebrew安装的opencv(如果之前装过的话) brew uninstall --force opencv
步骤2:用Homebrew编译适配OS X 10.10.5的OpenCV 3.4.x
OpenCV 4.x及以上版本已经不再支持OS X 10.10,所以我们要安装兼容的3.4.x分支:
# 安装指定版本的opencv@3,同时指定你的Python3.6路径 brew install opencv@3 --with-python3 --python=/Library/Frameworks/Python.framework/Versions/3.6/bin/python3
如果安装时遇到Homebrew版本不兼容的问题,可以先切换到最后支持OS X 10.10的Homebrew版本:
git -C "$(brew --repo)" checkout 2.2.10
切换完成后再执行上面的OpenCV安装命令。
步骤3:建立Python3.6的site-packages软链接
Homebrew编译的OpenCV不会自动加到你的Python3.6的site-packages目录,需要手动创建软链接:
- 先找到Homebrew安装opencv@3的具体版本路径:
会显示类似ls /usr/local/Cellar/opencv@3/3.4.16的版本号,记下来。 - 创建软链接到你的Python3.6站点包目录:
把命令里的ln -s /usr/local/Cellar/opencv@3/3.4.16/lib/python3.6/site-packages/cv2 /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/cv23.4.16替换成你实际查到的版本号。
步骤4:验证修复效果
打开终端运行Python3.6,测试导入:
import cv2 print(cv2.__version__)
如果能正常打印出类似3.4.16的版本号,就说明问题已经解决了!
内容的提问来源于stack exchange,提问作者Yuri
相关产品推荐
相关产品推荐

