Ubuntu16.04 anaconda3 opencv已經安裝,但是無法import的問題


解決anaconda中已經安裝了opencv3,但無法import的問題

你可能遇見的問題:

  1. ImportError: No module named cv2
  2. ImportError: libz-a147dcb0.so.1.2.3: cannot open shared object file: No such file or directory

第一個問題:

你可能沒有成功安裝opencv環境,或者你需要重新安裝opencv的環境進行嘗試

你可以查看這一篇博客進行配置opencv卸載與安裝

第二個問題:

你可能查看了某些博客,要求你將cv2.so移動到你的使用的python中( sudo cp /usr/local/lib/python2.7/dist-packages/cv2/cv2.so /home/username/anaconda3/lib/python3.6/dist-packages/),然后你再次import cv2就會發現會出現以上的報錯

你可以通過which python命令查看你的python的來源。例如你通過which python得到的結果是/home/learner/anaconda3/bin/python

那么說明你需要的opencv文件應該放在anaconda3/lib/python3.6(你的對應的版本)/dist-packages/中

解決方法:

如果你確實已經按照以上的博客進行安裝好opencv了,那么你可以繼續進行,否則,請先按照以上博客進行opencv的安裝。

根據提示,缺少的是libz-a147dcb0.so.1.2.3這個文件,那么我們進行查找通過sudo find / -name libz-a147dcb0.so.1.2.3

得到結果如下:

find: ‘/run/user/1000/gvfs’: Permission denied
/var/lib/docker/overlay2/f72d8ff7ad2486a45a06a7bccdebe2628377a839c7f943d7e2b06f44a825be87/diff/usr/local/lib/python3.6/dist-packages/PIL/.libs/libz-a147dcb0.so.1.2.3
/var/lib/docker/overlay2/f72d8ff7ad2486a45a06a7bccdebe2628377a839c7f943d7e2b06f44a825be87/diff/usr/local/lib/python3.6/dist-packages/h5py/.libs/libz-a147dcb0.so.1.2.3
/var/lib/docker/overlay2/f72d8ff7ad2486a45a06a7bccdebe2628377a839c7f943d7e2b06f44a825be87/diff/usr/local/lib/python3.6/dist-packages/matplotlib/.libs/libz-a147dcb0.so.1.2.3
/home/learner/.conda/envs/tensorflow/lib/python3.6/site-packages/PIL/.libs/libz-a147dcb0.so.1.2.3
/home/learner/.conda/envs/tensorflow/lib/python3.6/site-packages/h5py/.libs/libz-a147dcb0.so.1.2.3
/home/learner/.conda/envs/tensorflow/lib/python3.6/site-packages/matplotlib/.libs/libz-a147dcb0.so.1.2.3
/home/learner/.conda/envs/tensorflow/lib/python3.6/site-packages/cv2/.libs/libz-a147dcb0.so.1.2.3
/home/learner/.conda/envs/tf/lib/python3.6/site-packages/PIL/.libs/libz-a147dcb0.so.1.2.3
/home/learner/.conda/envs/tf/lib/python3.6/site-packages/h5py/.libs/libz-a147dcb0.so.1.2.3
/home/learner/.conda/envs/tf/lib/python3.6/site-packages/matplotlib/.libs/libz-a147dcb0.so.1.2.3
/home/learner/.conda/envs/tf/lib/python3.6/site-packages/cv2/.libs/libz-a147dcb0.so.1.2.3
/usr/local/lib/python3.5/dist-packages/cv2/.libs/libz-a147dcb0.so.1.2.3
/usr/local/lib/python3.5/dist-packages/matplotlib/.libs/libz-a147dcb0.so.1.2.3
/usr/local/lib/python2.7/dist-packages/h5py/.libs/libz-a147dcb0.so.1.2.3
/usr/local/lib/python2.7/dist-packages/cv2/.libs/libz-a147dcb0.so.1.2.3
/usr/local/lib/python2.7/dist-packages/matplotlib/.libs/libz-a147dcb0.so.1.2.3

我們可以觀察到有很多cv2的文件夾,而我們python所使用的anaconda3/lib/python3.6/site-packages中沒有這個文件,那么將cv2.so文件復制過去

cp /usr/local/lib/python2.7/dist-packages/cv2.so /anaconda3/lib/python3.6/site-packages

在此處還不夠,需要加上以下聲明,可以添加到.bashrc中

export PYTHONPATH=/home/learner/anaconda3/lib/python3.6/site-packages/:$PYTHONPATH

驗證結果

Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> 

這個方法是我誤打誤撞得到的,如果有更好的方法,希望大家可以給我留言,我會繼續改進的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM