问题引入
- ROS Melodic的默认环境是python2, 最新发布的ROS noetic才完全支持python3。因此对用ROS Melodic开发项目, 同时需要使用python3编写程序的使用者造成了一定的困扰。希望这篇文章可以有所帮助
- 目标: 在对原有python2代码不造成损害的前提下,开发用python3编写额外的ROS node. 在同一个ROS workspace下保证python2和python3编写的node均可以运行并且各自功能不受影响。Python3可以自由调用scikit-learn, numpy等包
解决方案
首选需要安装ROS对python3的软件包, 如下 (保险起见全都把安装一遍):
sudo apt-get install python3-catkin-pkg-modules
sudo apt-get install python3-rospkg-modules
sudo apt-get install python3-rosdep python3-rosinstall-generator python3-wstool python3-rosinstall build-essential
sudo pip3 install catkin_pkg
回到workspace, 对整个catkin workspace进行编译,同时指明python3的解释器:
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
这时候可能会遇到很多报错,例如xxx cannot find the packages…, 如果出现这类错误,直接重新安装一边