M1 Mac Anaconda虚拟环境下Python导入OpenCV出现ImportError问题问询
M1 Mac Anaconda环境OpenCV导入报错解决方案
问题根因
报错核心原因是当前安装的OpenCV版本依赖FFmpeg 4.x系列提供的libavcodec.58.dylib库,但你设备上没有对应版本的FFmpeg,且M1芯片Mac的Homebrew默认安装路径为/opt/homebrew,和Intel芯片设备路径不同,导致OpenCV无法找到依赖库。同时你先后使用conda、pip安装OpenCV,也存在包冲突风险。
解决步骤
第一步:清理冲突的OpenCV安装包
首先激活你使用的Anaconda虚拟环境,执行以下命令卸载所有已安装的OpenCV相关包:
- 卸载pip安装的OpenCV:
pip3 uninstall opencv-python opencv-python-headless -y - 卸载conda安装的OpenCV:
conda remove opencv -y
第二步:选择任意一种方案完成安装
推荐方案:从conda-forge源安装适配M1架构的OpenCV
conda-forge源提供了适配M1芯片的预编译OpenCV包,依赖会自动配套安装,无需手动处理FFmpeg问题,执行以下命令即可:
- 配置conda优先使用conda-forge源
conda config --add channels conda-forge conda config --set channel_priority strict
- 安装OpenCV
conda install opencv-python
安装完成后直接执行import cv2即可正常使用。
备选方案:手动安装对应版本FFmpeg
如果不想更换conda源,可以手动安装FFmpeg 4.x版本补充缺失的依赖库:
- 安装FFmpeg 4.x版本
arch -arm64 brew install ffmpeg@4 - 将FFmpeg 4.x的库路径加入ZSH环境变量,永久生效:
echo 'export DYLD_LIBRARY_PATH=/opt/homebrew/opt/ffmpeg@4/lib:$DYLD_LIBRARY_PATH' >> ~/.zshrc - 使环境变量生效
source ~/.zshrc - 重新安装OpenCV后即可正常导入。
注意事项
Anaconda虚拟环境下优先使用conda安装Python包,不要同时混用conda和pip安装同一个包,避免出现依赖冲突。
内容的提问来源于stack exchange,提问作者ppxx
相关产品推荐
相关产品推荐

