首页 > 解决方案 > 如何在同一个 python3 脚本中导入 rospy 和 cv2?

问题描述

问题

无法在 python3 env 中导入 cv2,例如:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type

解决方案

第一种方法是使用 .bashrc ,例如:

source /opt/ros/kinetic/setup.bash
source ~/catkin_ws/devel/setup.bash
export PATH="$PATH:/path/anaconda2/bin"
export PYTHONPATH=$PYTHONPATH:/opt/ros/kinetic/lib/python2.7/dist-packages/:
export PYTHONPATH="/home/users/anaconda2/envs/env_name/lib/python3.5/site-packages:$PYTHONPATH"

去测试,

conda activate env_name # the python3 environment name
python -c "import rospy"
python -c "import cv2"

它将工作没有任何错误输出!!!

但是当你 ssh 到机器人控制器时它就不起作用了,例如:intera.sh sim

标签: ros

解决方案


第二种成功方法是编辑头文件,如:

import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
import cv2
# make sure to use import rospy in the future
sys.path.append('/opt/ros/kinetic/lib/python2.7/dist-packages') 

推荐阅读