安装这玩意儿真心累啊,所以写一篇帖子去介绍下如何去搭建d4rl环境。
mujoco210是最新版本的mujoco,不需要key也不需要copy license。
这里建议使用linux系统,因为win10下不好操作。
我使用的是ubuntu20.04。
本文分以下几个环节介绍:(1) 如何搭建mujoco210 (2) 如何安装dm_control(3) 如何安装d4rl
一、搭建mujoco210
在你的主目录下创建 .mujoco 然后按照如下操作:
1.1 去 https://github.com/deepmind/mujoco/releases/tag/2.1.0 把linux版本的mujoco安装到.mujoco目录下。
1.2 去 https://github.com/deepmind/mujoco/releases/tag/2.1.1 把linux版本的包下载后,注意只把lib这一文件夹放到 .mujoco 下。
上述操作全完成后,接下来需要配置环境变量,如果不知道怎么配置,可以先 pip install mujoco-py
(系统会自动安装最新版,目前最新版的mujoco-py刚好同mujoco210相匹配) 然后在pycharm中运行 import mujoco_py
如果没有配置环境变量,会在pycharm的命令行中看到编译器给的提示。
比如:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/你自己的路径/.mujoco/mujoco210/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia
接下来在命令行中输入gedit ~/.bashrc
打开bashrc后,可以将上文中所提示的环境变量粘贴到其中,保存关闭后,运行 source ~/.bashrc
. 注意这个时候并不会立刻生效,所以需要重启计算机。
重启计算机后,发现mujoco-py似乎可以顺利导入了。也就说明mujoco210环境变量配置好了
此外有可能会遇到一些gcc的问题,经过尝试我发现大部分情况下是只把mujoco2.1.1放置于.mujoco下会出错,因此如果不是之前没有安装gcc,一定要按照我上文所说的去做。如果我们环境是一致的,出其他错的概率会小一点。
gym安装没有什么大麻烦,pip install gym
即可
二、dm_control
直接安装d4rl可能会出错
pip install git+https://github.com/rail-berkeley/d4rl@master#egg=d4rl
出错的位置就是dm_control fiailed to build wheel
所以这个时候先去找个网站https://github.com/deepmind/dm_control
把项目拷贝下来,命令行cd dm_control
进入文件夹,先pip install -r requirements.txt
,然后接着输入python setup.py install
这样勉强就把dm_control安装好了,然后起码d4rl可以顺利安装了。
遇到GL/glew.h这个问题需要运行sudo apt-get install libosmesa6-dev
如果安装报错并且错误中存在 absl 这个提示,在命令行中输入pip install absl-py
然后重新安装 dm_control
三、d4rl
安装好dm_control后,再安装d4rl基本不会报错了
pip install git+https://github.com/rail-berkeley/d4rl@master#egg=d4rl
安装d4rl后可以进行以下测试
import gym
import d4rl # Import required to register environments
# Create the environment
env = gym.make('maze2d-umaze-v1')
# d4rl abides by the OpenAI gym interface
env.reset()
env.step(env.action_space.sample())
# Each task is associated with a dataset
# dataset contains observations, actions, rewards, terminals, and infos
dataset = env.get_dataset()
print(dataset['observations']) # An N x dim_observation Numpy array of observations
# Alternatively, use d4rl.qlearning_dataset which
# also adds next_observations.
dataset = d4rl.qlearning_dataset(env)
上面的代码运行没有错误,即可。