一把辛酸泪,不论在哪配置强化学习环境,Mujoco永远是错误套错误套错误…
接下来,Mujoco下载和获取密匙、mujoco环境变量等过程跳过,这些几乎不会遇到问题。从安装编译mujoco_py开始看看Mujoco无底洞一样的坑。
获取更多内容,请访问博主的个人博客 爱吃猫的小鱼干的Blog
一 必不可缺的库
先来看看官方示例,如果你运行下面命令并成功安装,那可真是天选之子。
sudo apt install libosmesa6-dev libgl1-mesa-glx libglfw3
博主数台机器没有一次是直接成功,报错一般是libosmesa6 (= 11.2.0-1ubuntu2) but it is not going to be installed这样,接下来看看报错时的解决方案:
主要问题集中在上面三个库的依赖不存在,或者已经存在版本更高的依赖而导致安装无法继续,其它教程里的sudo apt-get -f install <…>等方法并不能很好的解决问题,这里使用如下指令:
sudo aptitude install libosmesa6-dev libgl1-mesa-glx libglfw3
同样会自动分析依赖,不同的是,它会给出解决方案,在执行命令后,会提示选择(Y/n/q/?)。一般而言,第一个解决方案意思是放弃安装,这当然不行,我们先选择n;执行后给出第二个解决方案,意思是自动更新安装一些依赖,这时候再选择Y。问题解决。
二 安装mujoco_py
2.1 从源码安装mujoco
pip安装mujoco_py日常失败,从源码安装:
git clone https://github.com/openai/mujoco-py.git
cd mujoco-py
sudo apt-get update
sudo apt-get install libgl1-mesa-dev libgl1-mesa-glx libosmesa6-dev python3-pip python3-numpy python3-scipy
"前提是,已经激活了项目所用的python虚拟环境"
pip3 install -r requirements.txt
python3 setup.py install
从源码安装完成,边祈祷边测试:
python
import mujoco_py
执行上面的命令后,开始进行必要的编译,成功的可能性微乎其微,下面展示多种错误及解决方案:
报错后不要只看最后一行,依次看看全部的报错内容,找到问题根源(关键词),从下面找对应的解决方法
2.2 错误1 fatal error: GL/osmesa.h: No such file or directory
检查一下libosmesa6-dev是否成功安装,没有的话用“一”中的方法安装
2.3 错误2 lGL问题 /usr/bin/ld: cannot find -lGL
这个问题的最后一行报错一般表现为:distutils.errors.LinkError: command ‘gcc’ failed with exit status 1。
原因是缺少库 libgl1-mesa-dev,同样用“一”中的方法解决:
sudo aptitude install libgl1-mesa-dev
sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so
2.4 问题3 patchelf问题 FileNotFoundError: [Errno 2] No such file or directory: ‘patchelf’: ‘patchelf’
安装该库即可
sudo apt-get install patchelf
如果安装之后还有报错,例如包括如下两条报错内容:
running build_ext stat: No such file or directory
subprocess.check_call([‘patchelf’, ‘–remove-rpath’, so_file])
这时候如果你的虚拟环境使用conda创建的,那么很幸运,如下指令将解决所有问题:
conda install -c anaconda patchelf
至此,博主遇到的坑全部填完,特别提示,在linux下编译mojoco时候,最后一行报错提示经会是…“gcc”…,这时候一定仔细查看每行报错内容,找到问题根源,一般而言和gcc版本等问题毫无关系。
获取更多内容,请访问博主的个人博客 爱吃猫的小鱼干的Blog