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。
 

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