【踩坑指南】ROS运行找不到defusedxml

ROS运行找不到defusedxml

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
    
    ① 如果没有链接,则显示:
    ls: cannot access '/usr/bin/python': No such file or directory
    
    ②如果链接到Python3,则显示:
    lrwxrwxrwx 1 0 0 16 1113 23:46 /usr/bin/python -> /usr/bin/python3
    
    ③我的显示:
    在这里插入图片描述
    lrwxrwxrwx 1 0 0 24 628 21:07 /usr/bin/python -> /etc/alternatives/python
    
    这让我想起来之前使用update-alternatives命令切换过pythoin版本,检查一下:
    在这里插入图片描述
    在这里插入图片描述
    这就说明对的上。
  • 然后针对自己的问题来解决:
    ① 如果是之前没有链接,直接链接即可:
    sudo ln -s /usr/bin/python2 /usr/bin/python
    
    ② 如果是链接错误,则需要先删除已有链接:
    sudo rm -rf /usr/bin/python	
    
    再重新链接至Python2:
    sudo ln -s /usr/bin/python2 /usr/bin/python	
    
    ③ 如果和我一样是直接链接到/etc/alternatives/python,则直接使用update-alternatives命令切换至Python2版本即可。
  • 最后再检查下,已经改过来了: 在这里插入图片描述
    在这里插入图片描述
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值