安装mujoco_py遇到的一些问题与解决方法,如command ‘gcc‘ failed with exit status 1

体质原因,我安装系统、软件、跑代码一般都会出各种错误,涉足各式各样稀奇古怪的坑(除了对的那个)。查找过很多资料,解决了一些,没解决一些,做个记录以免之后再次遇到,也为各位遇到相似麻烦的小伙伴提供一些解决方案和建议。有什么问题欢迎交流!

安装准备

因为ubuntu系统崩溃重装的原因,我一共装了四次mujoco_py,最终成功存活了两次(第一次和最后一次)。建议先浏览一下全文再动手处理你的报错问题。如果还有什么更稀奇古怪的关于mujoco-py的问题,不仅限于安装问题,还有使用问题巴拉巴拉,推荐两个地方,一个是Stack Overflow,另一个就是mujoco-py的讨论交流区

环境

先说一下我的整体环境(一定要创建一个虚拟环境,然后装mujoco_py,我是用conda创建的环境)

Ubuntu20.04 LTS
gcc 7.5.0(很重要!!!;gcc 9也有办法,下面有说)
conda创建的虚拟环境,python3.7(其他版本的python3没太试过,应该也行)
mujoco_200
mujoco_py 2.0

再说一下怎么解决安装mujoco_py中的报错,因为这里报错都是一长串的字符代码,真的让人头大,要冷静,要有耐心。然后去看哪里出了问题,从上往下看,因为可能会报好几个错误,都是由不同错误引起,但最后一行显示的错误却都相同command ‘gcc‘ failed with exit status 1,即gcc错误,要警惕,要对症下药。

关于gcc的问题

安装mujoco_py过程中最棘手的就是gcc错误了,有各种变体,所以最好提前就准备好gcc编译器的安装处理。

最好是安装gcc 7,在7版本gcc下我出的错最好解决,gcc 9版本太高(但应该是可以的,我在gcc 9 下装成功了一次,但是后面ubuntu系统又崩了,又重装了。。),mujoco_py有点适应不过来(毕竟好几年没更新了。。。),具体安装和切换gcc不同版本可以参考这个gcc安装教程,写得很棒。

安装过程

我们应该差不多,

$ cd mujoco-py
$ pip3 install -r requirements.txt
$ pip3 install -r requirements.dev.txt
$ python3 setup.py install

到这里一切风平浪静,然后开始测试是否安装成功,

$ python3
$ import mujoco_py

等待一会,正式开始进入报错环节(嗒当!🎉)

提前说一下,下面有的错误是我之前几次装的时候遇到的,但没有截图记录,所以可能有点记忆模糊,见谅。

报错与解决方案

再强调一下,看报错说明,从上到下,对症下药。

1.没有gcc可以执行,引起command ‘gcc‘ failed with exit status 1

这个问题是我之前装mujoco_py时遇到的,刚装了系统,没有装gcc编译器,因此报错,具体描述没有记录下来,大概意思就是这个(白字报错)。查看是否安装了gcc,以及安装的版本,

$ gcc --version

没有安装的话,安装系统默认版本的gcc,

$ sudo apt-get install gcc

ubuntu20.04应该会下载gcc 9,能用……
继续测试是否安装成功,失败,报错

2.fatal error:limits.h:没有那个文件或目录,引起command ‘gcc‘ failed with exit status 1

fatal error: limits.h: 没有那个文件或目录

这个有点麻烦的 ,我当时尝试了两个操作解决了,我觉得第二步更重要,可以试一下直接进行第二步。

第一步,更新一下python版本到3.8,然后重新安装一下mujoco_py,

$ python3 setup.py install

第二步,

$ sudo apt-get install python3-devel

可能会报错,无法安装依赖,下列软件包有未满足的依赖关系,可以参考本文下面第三点里的措施。

(个人感觉是因为gcc 9与python3.7,mujoco_py 2.0这三者的环境依赖要求冲突造成,没有太多实际根据,我也是linux小白)

再次测试是否安装成功,答:没有,继续报错

3.缺少GL/osmesa.h文件,由此引起command ‘gcc‘ failed with exit status 1

fatal error: GL/osmesa.h: 没有那个文件或目录

在这里插入图片描述
这个可以按照mujoco-py官网给出的解决方法处理。
我这里只安装了libosmesa6-dev便可以了

$ sudo apt install libosmesa6-dev

可能会报错下列软件包有未满足的依赖关系,无法直接安装。这是因为你所要安装的包的依赖项版本要求比较严格,通常是低于你的系统(或环境)已经安装了的相同依赖项的版本,需要手动换成低版本的依赖包,根据报错提示所需的依赖项版本,直接

$ sudo apt install xxx(依赖项名称)=xxx(所需版本) # 注意等号=前后没有空格

而且友善的提醒,你可能需要安装好多相关后续的低版本依赖项,不哭。大概溯源式安装四五个依赖包个就差不多了。
网上还有另外一种方法,就是利用aptitude来解决上述版本不匹配引起的无法安装的问题,如

$ sudo aptitude install libosmesa6-dev

如果你没有安装过aptitude则用以下指令安装

$ sudo apt install aptitude

aptitude这个安装指令会自动降级安装替换依赖项,以兼容不同的依赖环境,但我试了没有解决fatal error: GL/osmesa.h: 没有那个文件或目录这个问题,你们有兴趣可以试一下,成功了的话教教我咋回事。

(2022.4.15更新,感谢@yuedantai同学的评论解答,可以试一下,我暂时还未尝试)
关于 sudo aptitude install libosmesa6-dev 是这样的,第一步是让选择是否保留 libosmesa6-dev的当前版本,因为是要降版本,所以第一次要选择n(no),要是习惯性选择y(yes),就是没降版本,所以还是报那个错误。后面还有两次选择,才是选择y(yes)。

再次测试,再次报错

4.FileNotFoundError: [Errno 2] No such file or directory: 'patchelf': 'patchelf'

正常的话,import mujoco_py不会报上面gcc错误了……而是,报另一个错误

FileNotFoundError: [Errno 2] No such file or directory: ‘patchelf’: ‘patchelf’

在这里插入图片描述
安装patchelf就可以解决

$ sudo apt-get update -y
$ sudo apt-get install -y patchelf

然后应该就会安装成功了,继续把一直在测试的例子跑一下
在这里插入图片描述

5.ERROR: GLEW initalization error: Missing GL version' & Missing path to your environment variable.

运行使用mujoco_py的代码时,如果有调用可视化窗口env.render(),可能会有如下报错

Creating window glfw
ERROR: GLEW initalization error: Missing GL version

根据其他大神的解决方法,这是因为程序运行的时候和显卡没有动态链接,不影响代码运行,只是无法可视化。

解决方法为:
先安装package

$ sudo apt-get install libglew-dev

(可能会出现依赖项无法安装等等,同上依次手动安装)
然后在~/.bashrc文件中添加如下路径

export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so

然后在终端

$ source ~/.bashrc

如此,便可以在终端运行相关程序代码。

但是如果在pycharm中,可能还是会报错,它不会识别调用该路径,包括安装的mujoco_200的路径也无法识别调用,会报错

Missing path to your environment variable.
Current values LD_LIBRARY_PATH=
Please add following line to .bashrc:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dreamer/.mujoco/mujoco200/bin

需要手动添加路径,在pycharm中,

Run ——> Edit Configurations ——> Environment variables

然后,添加路径:
Name: LD_LIBRARY_PATH

Value: $LD_LIBRARY_PATH:/home/(用户名)/.mujoco/mujoco200/bin

Name: LD_PRELOAD

Value: /usr/lib/x86_64-linux-gnu/libGLEW.so
在这里插入图片描述
此报错解决方案参考:
【1】深度强化学习系列(2): ERROR: GLEW initalization error: Missing GL version
【2】Mujoco&Mujoco-py安装教程

done

  • 24
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值