【代码】D4RL安装全流程
0.前言
D4RL作为Offline RL必备benchmark,重要性无需多言。之前在Windows系统上安装过,一路“顺利”配到最后,没想到import d4rl
报错,且报错问题古怪,遂放弃。 思来想去还是转战Linux,果然一次成功,欣喜之余记录之。
非常感谢这份知乎教程,提供了所有我遇到的坑的解决方案。
1.Requirements
包名 | 版本 |
---|---|
python | 3.7 |
mujoco | 210 |
mujoco-py | 2.1.2.14 |
dm-control | 1.0.11 |
gym | 0.23.1 |
d4rl | 1.1 |
pygame* | 2.2.0 |
上述包除了python在创建conda虚拟环境时主动指定了版本,其余包版本均自动安装。
*pygame是为了运行经典环境如cart-pole额外安装的,与d4rl无直接关联。但默认安装的pygame版本过高,Ubuntu自动提示了2.2.0是合适的。
2.创建conda虚拟环境
由于是第一次在Ubuntu上安装Anaconda,全流程记录如下。
2.1.安装Anaconda
在Anaconda官网下在Linux版的安装包,在终端中进入安装包所在位置,执行bash安装。
1 | bash Anaconda3-xxxx-Linux-x86_64.sh |
同意协议,指定安装位置/home/xxx/anaconda3/,若不指定则是Anaconda设定的默认路径,安装后允许初始化,从而自动设置环境变量。
不要忘记执行source ~/.bashrc
,否则环境变量不生效。
2.2.创建虚拟环境
1 | conda create -n d4rl_env python=3.7 # 在终端当前路径下新建环境 |
2.3.conda常用初始化
1 | sudo apt install jupyter notebook # 安装Jupyter Notebook |
1 | jupyter kernelspec remove xxx # 解绑kernel |
3.安装mujoco210
在Mujoco的Github仓库中下载mujoco210-linux-x86_64.tar.gz,然后重命名、解压如下:
1 | cd ~/下载 # 进入压缩包所在目录 |
添加环境变量如下:
1 | sudo gedit ~/.bashrc # 打开设置文件 |
测试是否安装正确,弹出mujoco GUI,初始化了一个木偶人:
1 | cd ~/.mujoco/mujoco210/bin/ |
4.安装mujoco_py
4.1.安装gcc
首先,全局安装gcc
1 | sudo apt update # 更新包索引或包列表(并非upgrade会直接升级包到最新版本) |
由于未全局安装gcc导致卡住很久。在conda环境下输入python进入python环境,终端显示了[GCC 9.4.0] on linux
,以为已经默认安装过了,然而import mujoco_py
时显示未找到gcc文件导致无法编译。直到全局安装才解决问题。
看博文解释说gcc9版本过高导致不兼容,全局安装的gcc最好是7.5.0版本的。
4.2.安装mujoco_py(坑)
接着,在conda环境下安装mujoco_py包:
1 | pip install mujoco_py |
确保gcc安装完成后,依然会报错,但此时报错会明确给出编译出错的原因,例如:fatal error: GL/osmesa.h
,说明需要额外安装包。亲测踩坑如下:
1 | # fatal error: GL/osmesa.h 需安装: |
再次进入python环境并import mujoco_py
就不会报错了,代表安装成功。
5.安装dm_control
最轻松的一步,在conda环境下安装dm_control:
1 | pip install dm_control |
6.克隆并安装d4rl
6.1.配置git
新环境还没有git,先下载git并初始化。
1 | sudo apt install git # 下载git |
打开~/.ssh/id_rsa.pub,复制密钥,到Github上的setting中新建SSH。
1 | ssh git@github.com # 测试能否连通 出现Successfully即可 |
6.2.克隆仓库
现在可以clone d4rl仓库了,进入存放git文件的自定义目录下,执行clone命令:
1 | git clone https://github.com/rail-berkeley/d4rl.git |
网络不好可以多试几次(虚拟机科学上网也行),找到d4rl目录下的setup.py文件,注释掉install_requires
下的mujoco_py和dm_control,因为前面我们已经自行安装完毕了。
最后,在conda环境下,且在clone的d4rl文件目录下,执行安装命令:
1 | pip install -e . |
7.测试验证
进入jupyter notebook(其实在终端进入python环境也行),测试环境是否可用:
1 | import gym |
大功告成!
8.其他操作
为避免“纯净”的d4rl_env被误操作污染,复制一份pure_d4rl虚拟环境。
1 | conda create -n pure_d4rl --clone d4rl_env |
若环境配坏了,需删除conda环境。
1 | conda remove -n xxx --all |