ROS kinetic (Ubuntu 16.04)如何基于 python3 成功运行roscore
kinetic 作为ROS较老的版本默认基于python2.7运行,适用于Ubuntu16.04。当需要对基于Ubuntu16.04开发的程序进行功能迭代,且由于工作量的原因不愿将其完全移植到最新Ubuntu平台上时,会发现某些库(如GPy)只支持python3版本,与ROS kinetic 相矛盾。这时就需要使Ubuntu16.04同时支持ROS kinetic和python3才能保证程序的正常运行。
1.实现python2和python3的自由切换
注意:不要卸载python2!ROS kinetic 的工具是基于python2开发的,即使能运行roscore和节点,也无法使用rqt等工具,需要在程序运行结束后切换至python2
使用update-alternatives 观察系统有无python的可选项:
$ update-alternatives --display python
如果没有python可选项,会显示:
update-alternatives: 错误: 无 python 的候选项
之后根据需求添加python可选项:
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 1
使用update-alternatives进行python版本的切换:
$ sudo update-alternatives --config python
有 2 个候选项可用于替换 python (提供 /usr/bin/python)。
选择 路径 优先级 状态
------------------------------------------------------------
* 0 /usr/bin/python2.7 2 自动模式
1 /usr/bin/python2.7 2 手动模式
2 /usr/bin/python3.4 1 手动模式
要维持当前值[*]请按回车键,或者键入选择的编号:
输入python对应版本前的序号即可选择版本,最后进行确认:
$ python --version
2.基于python3运行roscore
切换为python3后运行roscore后会报错,错误指向:
opt/ros/kinetic/lib/python2.7/dis-packages/**
前后对两台电脑进行了python3环境的配置,一台自用笔记本,一台工控机,报错与提示不完全相同,但是都用同样的指令解决了问题:
$ sudo apt-get install -y python3-pip
$ sudo pip3 install rospkg
$ sudo pip3 install netifaces
$ sudo pip3 install defusedxml
即可实现roscore和节点的正常运行