运行roscore出错:SyntaxError: invalid syntax

2023-11-08

运行roscore出错:SyntaxError: invalid syntax

背景
系统为ubuntu16.04,自带python2.7和3.5。
有一次用pip整理python包,从根目录大量转移到用户目录,之后运行roscore就出问题了。
报错信息

Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

Traceback (most recent call last):
  File "/usr/bin/rosversion", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/home/hongzhilu/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 1365
    raise SyntaxError(e) from e
                            ^
SyntaxError: invalid syntax
Invalid <param> tag: Cannot load command parameter [rosversion]: command [rosversion roslaunch] returned with code [1]. 

Param xml is <param command="rosversion roslaunch" name="rosversion"/>
The traceback for the exception was written to the log file

报错分析

  1. 语法错误。python2和3的语法不兼容被诟病已久。
  2. 出错的路径一开始是系统目录/usr/bin下的rosversion,在import时跳转到了最近才有的用户目录python3.5/site-packages寻找pkg_resources

查询

运行

printenv | grep python

发现路径里不包括系统目录下的python包路径。
再运行

locate pkg_resources

输出里有

……
/usr/lib/python2.7/dist-packages/pkg_resources
/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py
/usr/lib/python2.7/dist-packages/pkg_resources/__init__.pyc
……

推论
roscore本来应该一直在系统目录下寻找python2的pkg_resources,然而路径被我的之前的python包配置操作误导到了用户目录,使其找进了python3的同名文件,出现语法错。
解决方法
在用户根目录的启动文件./bashrc中,添加路径

PYTHONPATH=/usr/lib/python2.7/dist-packages:${PYTHONPATH}

注意是向前添加,保证它先寻找到系统目录下的路径而不是用户目录。
修改后打开新终端ctrl+alt+T,或运行一下启动文件

source ~/.bashrc

最后运行roscore,成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运行roscore出错:SyntaxError: invalid syntax 的相关文章

随机推荐