事实上,只要在.py文件加上python3的shebang,rosrun的时候就会自动调用相应的解释器了:
#!/usr/bin/env python3
但是,在安装ros-kinetic-desktop-full
的时候,也并没有安装python3相关的package,所以需要手动安装。
1. 创建 virtualenv 环境。
需要创建一个虚拟环境来当作Python3的环境,调用python3相关的内容时就调用这个虚拟环境,这样才能与ROS中的python2实现共存。
sudo pip install virtualenv
我在这使用的是Python3.7
,指向系统已安装的python3也可以。
# /usr/...为 python3 解释器所在的位置
# rosenv 为创建的虚拟环境的文件名
$ virtualenv rosenv -p /usr/local/python3/bin/python3
$ source rosenv/bin/activate
$ python -V
2. 安装相应的Package
需要安装 catkin-tools
和 rospkg
。
#没有创建virtualenv的话,注意需要使用pip3
pip install catkin-tools
pip install rospkg
3. 按正常方式创建 ROS Packgae
创建 Packge 和 Node 的时候,无需 source virtualenv。
但是,记得要在 python node 的文件头部加上 shebang,否则 rosrun 仍会调用python2:
#!/usr/bin/env python3
4. rosrun
如果使用 virtualenv
,rosrun
前记得 source virtualenv
就好了。
source ros_test/devel/setup.zsh
#如没有使用virtualenv,下一语句则跳过
$ source rosenv/bin/activate
$ rosrun package_Name pytest.py
Note
需要注意的是,即使使用的virtualenv
中,python
指向的是python3
,但是只要不在.py
文件中添加python3
的shebang
,rosrun
还是会调用python2
的。这样可以很方便地兼容原来Python2
的Package
。