前提:ubuntu16下已经安装了ros,ubuntu 16.04自带python2.7和python3.5
一 ubuntu安装python虚拟环境
参考Ubuntu16.04 下 Python3 虚拟环境安装 OpenCV
(1)首先安装 Python 的包管理工具 pip
。安装 Python3 的 pip
:
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py
(2)然后安装模块,这里用python2.7也可以
sudo pip install virtualenv virtualenvwrapper
(3)切换到你需要建立虚拟环境的目录,执行(建立python3的虚拟环境)
virtualenv -p /usr/bin/python3.5 my_env
(4)在该目录下执行,开启虚拟环境
source my_env/bin/activate
(5)在该虚拟环境下执行其他操作
二 在虚拟环境下安装python opencv
(1)在pip中可以方便快速的安装opencv-python和opencv-contrib-python,只需要输入两条指令即可:
pip3 install opencv-python #安装opencv
pip3 install opencv-contrib-python #安装opencv的contrib扩展包
如果中途没报错,恭喜安装成功了。
(2)当引入 import cv2会报如下错误,是因为安装ros的时候将配置环境默认了
解决方法:参考https://blog.csdn.net/weixin_39312052/article/details/97006800
原因分析:ROS安装之后的~/.bashrc文件中多出一句:
source /opt/ros/kinetic/setup.bash
处理方法:建议采用第二种
(1)第一种方法
需要在~/.bashrc文件中增加一行命令,操作步骤为:
sudo gedit ~/.bashrc
部分处理方法是在.bashrc文件中把source /opt/ros/kinetic/setup.bash添加#符号注释掉,但这样势必会造成再次使用ROS时又需要把注释#去掉。
因此查找相关的材料可以在打开的.bashrc文件中的最后增加如下一行:
export PYTHONPATH="/home/li/anaconda2/lib/python3.5/site-packages:$PYTHONPATH"
注意:上面的路径中的userx需要换成你自己的用户名
PYTHONPATH后的/home/userx/anaconda3路径内容需要根据自己的anaconda安装路径来来进行更改,大多数默认的安装。目录都是以上这种情况,只需要更改/userx就行。但是最后得出的结果可能会和之前提到的那种方法产生一样,即运行ROS时需要注释掉这行代码,运行非ROS时需要加上这行代码。而接下来的第二种方法会在python文件中进行处理。
(2)第二种方法
因为是受ROS安装的影响,ROS安装之后会在python pyth中加入:
'/opt/ros/kinetic/lib/python2.7/dist-packages'
而为了解决此问题,可以在需要运行的python文件(即使用import cv2的python文件)中,添加以下代码:
import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
注意:一定要保证解决办法那两句代码 import sys sys.path.remove(’/opt/ros/kinetic/lib/python2.7/dist-packages’) 在import cv2之前。这样才能成功
通过这两行代码可以把ROS写入path中的路径给清除,进行可以import anaconda中的cv2包。
注:通过此方法再次import cv2时,问题得以解决,不再报错,但此方法并不一定可以保证在所有的情况下都适用,但还是值得一试滴。