Ubuntu+ROS-noetic+vscode+anacoda+tensorflow python解释器路径矛盾与解决措施

Ubuntu+ROS-noetic+vscode+anacoda+tensorflow python解释器路径矛盾与解决措施

起因:本人系统Ubuntu20.04,用anacoda搭建pyhon3虚拟环境进行ros+tensorflow2.4.0GPU强化学习机器人导航仿真,在运行的过程中出现以下问题:

AttributeError: 'google.protobuf.pyext._message.RepeatedCompositeCo' object has no attribute 'append'

错误出发点

首先我认为是tensorflow与protobuf的版本冲突,这里我查看的当前的prorobuf版本为3.19.4:
在这里插入图片描述

  • 参照网上关于protobuf版本问题的解决方案为:安装protobuf最新版本3.9.2,于是我尝试在tensorflow虚拟环境中卸载原有版本更新最新版本,此处省略其过程,发现问题依然存在!
  • 但考虑到我此时原来的protobuf为安装tensorflow时自动安装的附加的依赖库,其版本应该没有问题,于是我猜测不是版本问题,可能是环境问题,于是我分别切换到base环境和重新新建的环境python3.9或者python3.7查看protobuf版本:
  • 在这里插入图片描述
  • 在这里插入图片描述
    在这里插入图片描述
    发现不管是原python环境和conda虚拟环境下protobuf都为相同的版本,可见:
    并不是protobuf版本的问题!

错误源头

我尝试的查看python文件的路径,通过sys.path打印当前python文件的路径:
![在这里插入图片描述](https://img-blog.csdnimg.cn/bb1c4c7fefa547ed99444e0fd9997435.png
按理来说我的PYTHONPATH不应该包含/usr/local/及其/usr/lib下的python解释器,而应该是我的/anacoda/env/下的python解释器路经,随后我用print(os.sys.executable)打印我的解释器具,果然:
在这里插入图片描述
调用了我原python文件的解释器!!!
现在问题看似简单了:更换解释器!!!

解决方案

说到更换python解释器,我起初觉得问题就很简单:在vscode下从右下角或左下角更换解释器
在这里插入图片描述更换到我的tensorflow环境,为了保险起见我同样在我的python前面指定解析路径:
`#! /home/zyl/anaconda3/envs/tensorflow/lib/python3.8

`
本以为问题应该被解决了,但运行之后依然报错:

AttributeError: 'google.protobuf.pyext._message.RepeatedCompositeCo' object has no attribute 'append'

查看打印解释器:依然为/usr/local下的python解释器!!

再次我不得不从头开始研究这个问题。

最终解决方案

想起我运行这个python脚本并非直接运行,而是通过rosrun指令,可能我刚才的路进设置完全不适用,于是我想到是否是编译过程中的解释器已经被指定?

我找到当前工作空间/bulid/CMakeCache.txt文件查看编译细节,发现编译过程中已经制定解释器了,因此我在vscode中的设置并没有被执行
在这里插入图片描述
所以:
我的解决方案是新建工作空间,重头编译

新建工作空间->catkin_make->复制功能包->catkin_make

这样,重新查看编译过程:
在这里插入图片描述解释器已经定位到我的虚拟环境下,执行程序,成功!!!!!!

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值