問題
安裝步驟:在建立的虛擬環境下,按照文章《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。