Ubuntu16.04 Anaconda 虚拟环境安装ROS Kinetic后 import rospy出错问题

问题

安装步骤:在建立的虚拟环境下,按照文章《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。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章