引子
最近项目中用到了opencv库,需要在python中使用;
按照网上的教程,安装了opencv-python库,还有系统相关的opencv库
但是导入opencv库报段错误
问题现象
$ python -c 'import cv2'
段错误
解决方法
查看了各种文章,无外乎几种解决方法:
- 安装库
- 源码编译opencv库
各路方法都试了试,还是不行,编译opencv库的依赖比较多,所以轻易不想尝试。
经过分析,发现,如果是sudo python -c 'import cv2'就没有问题,但是线上服务又不能用root权限运行,所以还得解决。
既然sudo没有问题,说明库的安装是没有问题的,既然普通用户不能导入,说明还是python库的路径问题。
再仔细分析,python的site-package导入有一定的顺序,发现安装后的opencv库路径普通用户可能访问有问题:
$ sudo find / -name 'cv2.so'
/usr/lib64/python2.7/site-packages/cv2/cv2.so
修改方法比较简单,把cv2.so拷贝到用户的路径就可以了:
mkdir -p .local/lib/python2.7/site-packages
cp /usr/lib64/python2.7/site-packages/cv2/cv2.so .local/lib/python2.7/site-packages
再次执行导入cv2成功。