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

一、报错如下

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

二、错误原因分析

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

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

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

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

Ubuntu18.04安装Carla自动驾驶仿真平台 编译Python API报错ModuleNotFoundError: No module named ‘distro‘_第6张图片
保存并退出,重新执行make PythonAPI,编译成功,该问题解决。

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

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

你可能感兴趣的:(自动驾驶,路径规划,python,ubuntu,自动驾驶)