问题
安装步骤:在建立的虚拟环境下,按照文章《Ubuntu16.04安装ROS Kinetic详细过程》按步骤安装,走到运行:
rosdep update
时候,由于主系统安装的是 python2.7,而虚拟环境装的是python3.6,导致不兼容,出现以下错误:
Traceback (most recent call last):
File "/home/zsarosi/.local/bin/rosinstall", line 5, in <module>
from rosinstall.rosinstall_cli import rosinstall_main
File "/home/zsarosi/.local/lib/python2.7/site-packages/rosinstall/__init__.py", line 33, in <module>
import rosinstall.helpers
File "/home/zsarosi/.local/lib/python2.7/site-packages/rosinstall/helpers.py", line 35, in <module>
from rosinstall.config_elements import SetupConfigElement
File "/home/zsarosi/.local/lib/python2.7/site-packages/rosinstall/config_elements.py", line 38, in <module>
from vcstools import VcsClient
File "/home/zsarosi/.local/lib/python2.7/site-packages/vcstools/__init__.py", line 45, in <module>
from vcstools.tar import TarClient
File "/home/zsarosi/.local/lib/python2.7/site-packages/vcstools/tar.py", line 52, in <module>
import yaml
File "/usr/local/lib/python3.6/dist-packages/yaml/__init__.py", line 284
class YAMLObject(metaclass=YAMLObjectMetaclass):
解决方法
1. 安装相应的Package
需要安装catkin-tools和rospkg。
# 没有创建virtualenv的话,注意需要使用pip3
pip install catkin-tools
pip install rospkg
2. 按正常方式创建ROS Packgae
记得要在python node的文件头部加上shebang,否则rosrun仍会调用python2:
#!/usr/bin/env python3
3. rosrun
如果使用virtualenv,rosrun前记得source virtualenv就好了。
rosrun py3test pytest.py
Note
需要注意的是,即使使用的virtualenv中,python指向的是python3,但是只要不在.py文件中添加python3的shebang,rosrun还是会调用python2的。这样可以很方便地兼容原来Python2的Package。