安装 D4RL 和 mujoco-py
D4RL 包括一系列在离线强化学习中广泛使用的环境和数据集,mujoco-py
是一个用于与 MuJoCo 物理引擎交互的 Python 包,是 D4RL 的重要依赖之一。这两个包已经很久没有更新和维护,在安装时可能遇到一系列问题,但是它们仍然是离线强化学习领域的重要工具。本文以 Ubuntu 下的 conda 环境为例,介绍如何安装 D4RL 和 mujoco-py 库。如果你正在使用其他 Linux 发行版、使用 venv 或在容器中安装,可能需要根据实际情况进行调整。
创建环境和安装 pip 包
首先创建和激活环境。注意指定了 Python 版本 (D4RL 要求 >=3.7, <3.11
):
1 |
|
安装 pip 包,注意 mujoco-py 和 cython 3 不兼容,因此指定了 cython<3
1 |
|
为 mujoco-py 准备依赖
安装 MuJoCo 引擎
根据 mujoco-py 文档 进行安装:
1 |
|
为 mujoco-py 的编译准备依赖
在编译 mujoco-py
时通常会遇到四类问题:
cython
版本不兼容导致的编译错误,上面已经通过指定cython<3
解决- 缺少 OpenGL 相关的依赖
- 缺少
patchelf
- 找不到
GLIBCXX_3.4.30
为了解决这些问题,我们需要安装一些系统依赖和 conda 包。下面的命令中
- 第一行解决了缺少 openGL 的问题
- 第二行解决了缺少 patchelf 的问题
- 第三行解决了找不到 GLIBCXX_3.4.30 的问题。非
conda
环境或者conda
源为forge
可能不会出现问题,可以遇到问题了再执行- 这里使用 conda 而非 apt 是为了将 glibc 版本的更改限制在 conda 环境内,避免对系统内其他程序造成影响。如果是在虚拟机/容器/notebook下可以直接 apt 安装
- 这一步可能会比较久。可以直接通过
rm $CONDA_PREFIX/lib/libstdc++.so.6 && ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 $CONDA_PREFIX/lib/libstdc++.so.6
来解决。我用了很久了都没出现问题。
1 |
|
安装 mujoco-py 并编译
安装 mujoco-py:
1 |
|
最后进入 python
交互式终端并尝试 import d4rl
,在此过程中会导入 mujoco 并进行编译。检查编译是否成功。
参考资料
安装 D4RL 和 mujoco-py