树莓派Raspian10安装OpenCV后Python3无法导入cv2模块问题咨询
问题成因
编译安装OpenCV时,安装脚本默认将cv2模块绑定到了系统自带的Python2.7环境,未将模块注册到Python3的包搜索路径中,也未写入Python3的site-packages目录。Python解释器启动时默认会将当前工作目录加入模块搜索路径,因此只有进入opencv/build/python_loader/目录启动Python3时才能找到cv2模块,切换到其他目录就会触发ModuleNotFoundError。
解决方法
系统全局Python3环境配置
执行以下命令将cv2模块正式安装到系统Python3的包目录,实现任意路径下都可正常导入:
- 进入模块源码目录
cd ~/opencv/build/python_loader/
- 执行Python3安装脚本
sudo python3 setup.py install
- 验证安装结果,切回用户主目录测试导入:
cd ~ python3 -c "import cv2; print(cv2.__version__)"
命令正常输出4.6.0-dev即代表全局配置生效。
如果不想执行安装脚本,也可以通过添加环境变量的方式实现全局生效:编辑用户目录下的.bashrc文件,在文件末尾追加以下内容:
export PYTHONPATH="${PYTHONPATH}:$HOME/opencv/build/python_loader"
保存后执行source ~/.bashrc重载配置即可,该方法对所有终端会话生效。
Python3虚拟环境配置
根据使用需求二选一即可:
- 方案1:创建虚拟环境时开启全局包继承
新建虚拟环境时添加--system-site-packages参数,虚拟环境就可以直接调用刚才全局安装的cv2模块:
python3 -m venv --system-site-packages 你的虚拟环境名称
- 方案2:保持虚拟环境隔离,单独添加cv2软链接
如果不想让虚拟环境读取所有全局包,可以在激活虚拟环境后,单独给cv2模块创建软链接到虚拟环境的包目录:- 激活目标虚拟环境,查询虚拟环境的site-packages路径:
source 你的虚拟环境路径/bin/activate python -c "import site; print(site.getsitepackages()[0])"注意:创建软链接时请使用绝对路径,不要使用相对路径,否则会出现链接失效导致模块找不到的问题。
- 将cv2模块软链接到上一步输出的路径中,注意替换命令中的路径占位符:
ln -s ~/opencv/build/python_loader/cv2 上一步查询到的site-packages绝对路径/cv2- 验证:在虚拟环境激活状态下执行
import cv2,无报错即配置成功。
内容的提问来源于stack exchange,提问作者J.Barker
相关产品推荐
相关产品推荐

