1. 报错信息
```bash
auto-starting new master
process[master]: started with pid [4080]
Traceback (most recent call last):
File "/opt/ros/kinetic/bin/rosmaster", line 34, in <module>
import rosmaster
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosmaster/__init__.py", line 35, in <module>
from .main import rosmaster_main
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosmaster/main.py", line 43, in <module>
import rosmaster.master
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosmaster/master.py", line 47, in <module>
import rosmaster.master_api
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosmaster/master_api.py", line 72, in <module>
from rosmaster.util import xmlrpcapi
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosmaster/util.py", line 48, in <module>
from defusedxml.xmlrpc import monkey_patch
ImportError: No module named 'defusedxml'
================================================================================REQUIRED process [master] has died!
process has died [pid 4080, exit code 1, cmd rosmaster --core -p 11311 -w 3 __log:=/home/XXX/.ros/log/0a8a5bb6-1f65-11ec-b58b-b42e998b06c6/master.log].
log file: /home/XXX/.ros/log/0a8a5bb6-1f65-11ec-b58b-b42e998b06c6/master*.log
Initiating shutdown!
================================================================================
```
核心信息:No module named 'defusedxml'
2. 原因
19年N版之前的ROS都是依赖于Python2的,其通过路径/usr/bin/python
来查找。出现这个问题的原因可能是未将Pyhton2设置到该路径,或者该路径为Python3版本。
参考:ImportError: No module named defusedxml
3. 解决方案
- 先查看路径
/usr/bin/python
是否被正确链接:
① 如果没有链接,则显示:ls -n /usr/bin/python
②如果链接到Python3,则显示:ls: cannot access '/usr/bin/python': No such file or directory
③我的显示:lrwxrwxrwx 1 0 0 16 11月 13 23:46 /usr/bin/python -> /usr/bin/python3
这让我想起来之前使用lrwxrwxrwx 1 0 0 24 6月 28 21:07 /usr/bin/python -> /etc/alternatives/python
update-alternatives
命令切换过pythoin版本,检查一下:
这就说明对的上。 - 然后针对自己的问题来解决:
① 如果是之前没有链接,直接链接即可:
② 如果是链接错误,则需要先删除已有链接:sudo ln -s /usr/bin/python2 /usr/bin/python
再重新链接至Python2:sudo rm -rf /usr/bin/python
③ 如果和我一样是直接链接到sudo ln -s /usr/bin/python2 /usr/bin/python
/etc/alternatives/python
,则直接使用update-alternatives
命令切换至Python2版本即可。 - 最后再检查下,已经改过来了: