M1 Mac使用pip安装OpenCV失败,排除不可行方案求解决方法
M1芯片Mac使用pip安装opencv-python缺失libavcodec.58.dylib报错解决方案
报错信息
/Users/zhaojun/Github/OpenCV_Demo/venv/bin/python /Users/zhaojun/Github/OpenCV_Demo/venv/com.ctrip.com/nowatermarkdemo.py Traceback (most recent call last): File "/Users/zhao'un/Github/OoenCV Demo/venv/com ctrio com/nowatermarkdemo ov", line 1, in <module> import cv2 as cv File "/Dsers/zhao"un/Github/DoenCV Demo/venv/lib/ovthon3 9/site-oacka es/cv2/ init.cv", line 5, in <module> from .cv2 import * ImportError: dlopen(/Users/zhaojun/Github/OpenCV_Demo/venv/lib/python3.9/site-packages/cv2/cv2.cpython-39-darwin.so, 2): Library not loaded: /opt/homebrew/opt/ffmpeg/lib/libavcodec.58.dylib Referenced from: /Users/zhaojun/Github/OpenCV_Demo/venv/lib/python3.9/site-packages/cv2/cv2.cpython-39-darwin.so Reason: image not found Process finished with exit code 1
问题原因
已安装的opencv-python版本依赖FFmpeg 4.x版本的动态库,而M1芯片Mac的原生Homebrew默认会安装FFmpeg 5/6版本,对应提供的是更高版本的libavcodec库,无法匹配旧版opencv-python的依赖要求。
可行解决方案(无需Rosetta/无需Conda/无需源码编译)
方案1:升级opencv-python到适配版本
- 先卸载所有已安装的opencv相关包,执行命令:
pip uninstall -y opencv-python opencv-contrib-python opencv-python-headless - 安装4.6.0及以上版本的opencv-python,该版本已经适配M1原生架构的新FFmpeg依赖:
pip install opencv-python>=4.6.0 - 操作前请确保你已经激活了项目对应的虚拟环境。
方案2:安装FFmpeg 4.x版本适配现有opencv-python
如果项目有版本要求不能升级opencv-python,可以安装对应版本的FFmpeg:
- 执行Homebrew命令安装FFmpeg 4.x版本:
brew install ffmpeg@4 - 将FFmpeg 4.x的路径加入环境变量,临时生效直接执行:
export PATH="/opt/homebrew/opt/ffmpeg@4/bin:$PATH" - 如需永久生效,将上面的环境变量配置语句写入你的shell配置文件(/.zshrc或/.bash_profile),执行
source ~/.zshrc(zsh环境)或source ~/.bash_profile(bash环境)生效即可。
内容的提问来源于stack exchange,提问作者Kakshil Shah
相关产品推荐
相关产品推荐

