ubuntu16.04中安装python3的opencv总结与无法把opencv安装在python3中的解决方案

笔者在尝试在虚拟机上安装opencv时,由于ubuntu自带了两个opencv的原因,不论是直接用源码编译,还是pip下载,都会把opencv安装在默认的python2上,而笔者想把opencv安装在python3上,在尝试了一些网友给出的解决方案后,终于找到了一个能解决这个问题的方法。

一、安装方法

笔者这里采用的安装方法是直接用pip安装,因为笔者只用到python来做opencv,所以用pip安装方便些,也不需要花费太多的时间在编译上。如果之前已经用其他方法安装的建议先删掉,重来一遍!!!
直接在终端键入:

sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python

没有pip3的可以先用apt安装一下pip3;代码中间那部分是调用清华源,会加快下载速度,具体看我另一篇博文(博文链接
因为使用清华源,下载速度很快;安装完成后,打开python3,键入 import cv2,嗯,喜闻乐见的报错
在这里插入图片描述
但你打开python2再来import cv2,居然有用!!!!非常气人,明明是用pip3安装的,为什么安装到python2上面去了呢?
在这里插入图片描述

错误分析

查阅后这里说的是指向性有问题,笔者经过一番研究后发现,是在python的sys路径中没有包含一个so文件,导致python2的优先级总是比python3的优先级高之类的(这一段笔者没有深入研究,可能不对)

解决方案

这里的解决方案是在一个外文网站上提出来的,网址如下:
https://stackoverflow.com/questions/39112321/python-3-5-importerror-dynamic-module-does-not-define-module-export-function-p
网友的解答中提到几种不同的思路,笔者选用了最适合笔者现状的那种。具体图片如下:
在这里插入图片描述
他的意思就是要在sys.path中添加一个路径,且这个路径的排名要相对靠前,然后就行了。笔者尝试一番:
在这里插入图片描述
真的有用!!!!

>>> import sys
>>> print(sys.path)
['', '/home/riki/google_ws/install_isolated/lib/python2.7/dist-packages', '/home/riki/catkin_ws/devel/lib/python2.7/dist-packages', '/opt/ros/kinetic/lib/python2.7/dist-packages', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']
>>> sys.path.insert(1,'/usr/local/lib/python3.5/dist-packages/cv2')
>>> print(sys.path)
['', '/usr/local/lib/python3.5/dist-packages/cv2', '/home/riki/google_ws/install_isolated/lib/python2.7/dist-packages', '/home/riki/catkin_ws/devel/lib/python2.7/dist-packages', '/opt/ros/kinetic/lib/python2.7/dist-packages', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']
>>> import cv2
>>> 

可以看出,这里是在sys.path的第一个位置插入了一个/usr/local/lib/python3.5/dist-packages/cv2路径,然后就可以工作了。

### *具体路径怎么查

*每个人的路径名应该都大同小异,主要核心是你的这个路径它最后指向的是一个叫cv2.cpython-35m-x86_64-linux-gnu.so的文件,如下图所示
在这里插入图片描述

到这里有一次import能成功就很欢喜了,但坏消息是这样的添加的是暂时性的,等你关掉这个终端,就又没有用了,还需要再在sys添加一次路径,所以应该想一个一劳永逸的方法:

第一种:
是网上说的新建一个pth文件,这种方法添加的路径不能保证是排在路径的第一个,所以对我们这种情况来说是没有用的!
第二种:

修改.bashrc文件:在Home文件夹下,按下Ctrl+H,会显示隐藏文件,用gedit打开隐藏文件中的.bashrc文件,在最后一行添加

export PYTHONPATH=/usr/local/lib/python3.5/dist-packages/cv2:$PYTHONPATH 

代码中间部分是你上面要插入的sys.path的地址在这里插入图片描述
保存后关闭,在命令行输入

source .bashrc

这句命令的意思是让你上面添加.bashrc文件立马激活,不然要计算机重启才能激活,之后再进入python3中,看一下环境变量,试一下import cv2
在这里插入图片描述
OK,到这里可以看到问题完美解决!

  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
安装OpenCV 2.4.9在ubuntu16.04上需要以下步骤: 1. 首先,从以下链接下载OpenCV源码文件:。 2. 安装必要的环境:使用以下命令安装必要的依赖项: ``` sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev ``` 3. 解压下载的OpenCV源码文件并进入源码目录。在终端使用以下命令进行解压: ``` unzip opencv-2.4.9.zip cd opencv-2.4.9 ``` 4. 创建一个release目录,并进入该目录: ``` mkdir release cd release ``` 5. 使用cmake编译OpenCV源码,并将所有的库文件安装到/usr/local目录下: ``` cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. ``` 6. 返回到opencv-2.4.9目录: ``` cd .. ``` 7. 安装OpenCV库文件: ``` sudo make install ``` 这样,你就成功地在ubuntu16.04安装OpenCV 2.4.9。请注意,这个过程可能需要一些时间,具体取决于你的系统和网络速度。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Ubuntu16.04安装opencv2.4.9及若干问题解决方法](https://blog.csdn.net/weixin_39513374/article/details/80190487)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [ubuntu16.04安装opencv2.4.9](https://blog.csdn.net/weixin_34250434/article/details/94706217)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [matlab的冲击信号图代码-Start-Zero-Ubuntu16.04-install-caffe-cuda9.1-cndnn9.1-Op](https://download.csdn.net/download/weixin_38688145/18892111)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值