Ubuntu 16.04 安装ROS后import cv2失败

---------------------- 2019年12月3日更新 --------------------------------------
其实出现这种错误,还有一种原因。当时github上下载的代码调试的,它的python文件中添加了:

#!/usr/bin/env python

我的电脑用的是anaconda环境配置的虚拟环境,python默认指向的是python3的Shebang。网上有人说,只要不再python文件中添加python3的Shebang,rosrun还是会调用python2的Shebang。这样做是为了方便的兼容原来python2的Package。

故,如出现import cv2失败的情况,可先尝试指定Shebang的方式进行调试,实在不行,再尝试下面的方式进行修改。



安装ROS Kinetic之后,python3代码中使用import cv2失败,提示:

ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type

因为安装ros 后,PYTHONPATH会加入ros 的Python2.7的路径,且优先级高于Python3。所以最开始网上查是通过在修改.bashrc文件解决的,在文件末尾添加一行如下指令:

export PYTHONPATH="/home/USERPATH/anaconda3/lib/python3.7/site-packages:$PYTHONPATH"

但是后来发现这种修改方式会导致ROS无法使用,所以就通过如下方式进行了修改:

cd /opt/ros/kinetic/lib/python2.7/dist-packages
sudo mv cv2.so cv2_ros.so 

你可能感兴趣的:(Ubuntu 16.04 安装ROS后import cv2失败)