ROS Melodic下Python3与vision_opencv兼容问题求助
解决ROS Melodic下Python3与cv_bridge的兼容问题
直接修复cv_bridge源码语法
你已经编译了Python3版本的vision_opencv,直接修改cv_bridge/core.py中的Python2语法:
- 找到所有形如
raise Exception, error_msg的语句,替换为Python3兼容的raise Exception(error_msg) - 针对Python2编译时的
super()错误,将脚本中super()的调用统一写成兼容双版本的格式:super(YourClass, self).__init__(...)(Python2要求显式传递类和实例参数,Python3也支持该写法)
用虚拟环境隔离Python环境
- 创建并激活Python3虚拟环境:
virtualenv -p python3 ~/ros_py3_env source ~/ros_py3_env/bin/activate - 在虚拟环境中安装ROS依赖的Python3包:
pip install rospkg catkin_pkg empy numpy - 重新编译Python3版本的vision_opencv,明确指定Python3参数:
cd ~/catkin_ws catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so - 运行节点前务必激活虚拟环境,同时保持脚本的shebang为
#!/usr/bin/env python3
适配ROS Noetic版cv_bridge源码
ROS Noetic默认支持Python3,其cv_bridge已修复语法兼容问题:
- 删除现有vision_opencv包:
rm -rf ~/catkin_ws/src/vision_opencv - 克隆Noetic分支的vision_opencv:
cd ~/catkin_ws/src git clone https://github.com/ros-perception/vision_opencv.git -b noetic - 用方案2中的Python3编译命令重新编译
核心注意事项
- 检查camera_calibration及其他依赖ROS包的Python代码,确保语法适配目标Python版本
- 编译时避免混用Python2和Python3参数,全程保持版本一致
- 运行节点前,确保
PYTHONPATH指向Python3版本的catkin_ws devel目录,防止加载系统默认的Python2版cv_bridge
内容的提问来源于stack exchange,提问作者Nagarjun Vinukonda
相关产品推荐
相关产品推荐

