Ubuntu18.04安装Carla自动驾驶仿真平台 编译Python API报错ModuleNotFoundError: No module named ‘distro‘

一、报错如下

在这里插入图片描述

二、错误原因分析

在这里插入图片描述

报错很明显,是因为执行的这个setup.py文件中,第35行import distro的时候,找不到模块distro。
正常来讲,Python代码中,通过import导入的,要么是Python第三方库,要么是自己开发过程中编写的一个py文件,在这里因为用到所以需要将其import,但是观察setup.py所在文件目录内,并没有名为distro.py的文件,因此可以判断要么是缺少了Carla项目中的这个文件,要么就是我们系统中缺少了distro这个Python的第三方库,想要进一步确认,我们就要知道这两行代码有什么作用,通过上图倒数第二行代码的if判断语句,可以猜测变量linux_distro是返回了系统版本。
通过查阅资料发现Python中的platform模块也可以实现该功能,开启终端,进入Python测试一下结果如下:
在这里插入图片描述

可以看到,通过Python的platform模块进行替换后可以完美实现原来两行代码的需求。
另外,在找到的资料里顺便看到了,distro的确是一个第三方库,所以更简单的解决方案应该是直接安装distro库,但是我直接使用了pip install distro,安装后并没有效果,错误依旧存在,然后打开终端重新测试了一下:
在这里插入图片描述
这样就知道为什么不管用了,我的ubuntu18.04有两个Python版本,Python2能导入该模块,但是Python3无法使用,所以可以肯定的是,Carla项目中PythonAPI默认使用的是Python3来完成编译的,那么就需要pip3 install distro安装才行(pip是针对Python2的,pip3是针对Python3的)。
在这里插入图片描述
这样问题就解决了,重新编译PythonAPI就不会报错找不到distro模块了。

三、总结:

解决方案1:添加distro库

直接在命令行输入:

pip install distro		#Python2
pip3 install distro		#Python3

如果安装不成功,使用方案2。

解决方案2:修改源码

在git clone下来的carla文件夹下,找到报错的setup.py代码文件并通过文本编辑器修改:

sudo gedit PythonAPI/carla/setup.py

通过文本编辑器右下角显示的当前光标所在行,找到出错的第35行,将原来的下面这两行注释掉(注释掉是因为毕竟在改别人源代码,保留原来的以防万一)

        import distro
        
        linux_distro = distro.linux_distribution()[0]

然后在他们中间加入以下两行:

        import platform
        linux_distro = platform.linux_distribution()[0]

修改后该代码段如图所示:

在这里插入图片描述
保存并退出,重新执行make PythonAPI,编译成功,该问题解决。

搞了半天,其实就是编译过程中用到的Python缺少第三方库导致编译出错,那么其他类似找不到模块的编译错误一个道理,试着重新安装库直到啥也不缺为止。

参考链接:https://ask.csdn.net/questions/7392220

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值