python 版本错误导致的 roscore 问题

这几天快疯了,ROS好多坑;提醒一下python的版本不要随意切换哈;我的python 从自带的python-2.7变成 python-3.6后出现很多的问题,其中一个就是 roscore问题; 问题如下:

Traceback (most recent call last):
File “/opt/ros/kinetic/bin/roscore”, line 36, in
from rosmaster.master_api import NUM_WORKERS
File “/opt/ros/kinetic/lib/python2.7/dist-packages/rosmaster/init.py”, line 35, in
from .main import rosmaster_main
File “/opt/ros/kinetic/lib/python2.7/dist-packages/rosmaster/main.py”, line 43, in
import rosmaster.master
File “/opt/ros/kinetic/lib/python2.7/dist-packages/rosmaster/master.py”, line 47, in
import rosmaster.master_api
File “/opt/ros/kinetic/lib/python2.7/dist-packages/rosmaster/master_api.py”, line 72, in
from rosmaster.util import xmlrpcapi
File “/opt/ros/kinetic/lib/python2.7/dist-packages/rosmaster/util.py”, line 48, in
from defusedxml.xmlrpc import monkey_patch
ImportError: No module named ‘defusedxml’

解决办法:切换到 python-2.7

方法一 、查看你PC  python的版本号

1:输入

ls /usr/bin/py

2:修改默认Python

        cd  /usr/bin/

        sudo rm/usr/ bin/python #删除原有的Python连接文件

        sudo ln - s / usr / bin / python3.5 python #建立指向Python3.X的连接

3:还原2.7版本

        cd / usr / bin /

        sudo rm / usr / bin / python #删除原有的Python连接文件

        sudo ln - s / usr / bin / python2.7 python #建立指向Python2.7的连接

4:验证是否修改成功

 

推荐的方法二

方法二、使用update-alternatives 来为整个系统更改Python默认版本

1、列出python版本号sudo update-alternatives --list python

当使用sudo update-alternatives --list python来列出所有可用的python版本时提示:

error: no alternatives for python,或者 错误:无python 的候选项

那说明Python 的替代版本尚未被 update-alternatives 命令识别.想解决这个问题,

我们需要更新一下替代列表,将python2.7和python3.4放入其中,使用如下命令将python2.7和python3.5加入到python列表中:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2

--install选项使用了多个参数用于创建符号链接,最后一个参数指定了此选项的优先级,

如果我们没有手动来设置替代选项,那么具有最高优先级的选项就会被选中.

2、配置默认解释器s udo update-alternatives --config python

下面我选择编号1,选择python2.7 验证在终端输入python即可:

结果说明我们的python 切换成功

 

 

我们运行 roscore

如果 报错  Unable to contact my own server at

解决方法一

输入以下两步即可:

export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://localhost:11311

再次运行 roscore

hltt3838@hltt3838-G3-3579:~$ roscore
... logging to /home/hltt3838/.ros/log/0e3671d8-0aa2-11eb-ad42-a0a4c52fa62a/roslaunch-hltt3838-G3-3579-4084.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://localhost:44709/
ros_comm version 1.14.9


SUMMARY
========

PARAMETERS
 * /rosdistro: melodic
 * /rosversion: 1.14.9

NODES

auto-starting new master
process[master]: started with pid [4094]
ROS_MASTER_URI=http://localhost:11311/

setting /run_id to 0e3671d8-0aa2-11eb-ad42-a0a4c52fa62a
process[rosout-1]: started with pid [4105]
started core service [/rosout]

但所,我们打开一个终端,再次输入 roscore, 还是会出现这个问题:

 

解决方法二

终端输入 gedit ~/.bashrc 

在bashrc文件中更改以下为

export ROS_HOSTNAME=终端电脑名称即@与:之间部分)

export ROS_MASTER_URI=http://终端电脑名称 (即@与:之间部分:11311)

//  hltt3838@hltt3838-G3-3579:~$  =  @与:之间部分

重启电脑即可,输入roscore,出现警告,但所没有错误

 

解决方法三

sudo gedit ~/.bashrc

在文件末尾输入:

 export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://localhost:11311

最后,一样,source一下就可以了

source ~/.bashrc

我用这个方法解决的

解决方法四

1、ifconfig                       #查看本机IP地址
2、gedit ~/.bashrc       #打开bashrc文件
3、在文件中讲ROS_HOSTNAME值改为自己的IP地址就OK。(192.168.20.×××是自己电脑查询的IP地址)
export ROS_MASTER_URI=http://192.168.20.×××:11311
export ROS_HOSTNAME=192.168.20.×××

4、source  ~/.bashrc    #老规矩,source一下环境变量

 

 

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

他人是一面镜子,保持谦虚的态度

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值