---------------------- 2019年12月3日更新 --------------------------------------
其實(shí)出現(xiàn)這種錯誤揭斧,還有一種原因束凑。當(dāng)時github上下載的代碼調(diào)試的,它的python文件中添加了:
#!/usr/bin/env python
我的電腦用的是anaconda環(huán)境配置的虛擬環(huán)境,python默認(rèn)指向的是python3的Shebang。網(wǎng)上有人說虹蒋,只要不再python文件中添加python3的Shebang,rosrun還是會調(diào)用python2的Shebang拣技。這樣做是為了方便的兼容原來python2的Package千诬。
故耍目,如出現(xiàn)import cv2失敗的情況膏斤,可先嘗試指定Shebang的方式進(jìn)行調(diào)試,實(shí)在不行邪驮,再嘗試下面的方式進(jìn)行修改莫辨。
安裝ROS Kinetic之后,python3代碼中使用import cv2失敗毅访,提示:
ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type
因?yàn)榘惭bros 后沮榜,PYTHONPATH會加入ros 的Python2.7的路徑,且優(yōu)先級高于Python3喻粹。所以最開始網(wǎng)上查是通過在修改.bashrc文件解決的蟆融,在文件末尾添加一行如下指令:
export PYTHONPATH="/home/USERPATH/anaconda3/lib/python3.7/site-packages:$PYTHONPATH"
但是后來發(fā)現(xiàn)這種修改方式會導(dǎo)致ROS無法使用,所以就通過如下方式進(jìn)行了修改:
cd /opt/ros/kinetic/lib/python2.7/dist-packages
sudo mv cv2.so cv2_ros.so