配置Gym环境的血泪史.
[!attention]
先说结论: 如果你想要学习强化学习, 并因此想要配备 gym环境, 那么只用看文章的前面很小一部分就可以了. 后面的绝大部分内容都只是一个走错路的人无用而绝望的记录而已.
gymnasium 的官方文档, 简要记录了其拥有的各种环境, 同时介绍了安装的方法.
https://github.com/Farama-Foundation/Gymnasium
用于指导的官方文档
https://gymnasium.farama.org/environments/mujoco/
此处采用的系统是 Ubuntu22.04 .
对于gymnasium本体的安装, 只需要运行命令
1 | pip install gymnasium |
就可以了. 这是一种轻量化的方式, 如果你只是想要尝试gym里的一些简单环境, 那么这样就够了.
但是倘若你想要尝试更多复杂的内容, 那么就运行
1 | pip install swig |
ok. 这就足够了. 不需要环境变量, 不需要别的命令行, 不需要各种文档, 教程和报错. 就这两行就够了!!!
很多教程中, 我们会需要进入 mujoco官网下载mujoco本体, 再下载一个mujoco_py文件, 之后进入文件夹运行 python setup.py install
, 然后解决一大堆一大堆的报错… 现在不需要了!!! 时间流逝版本更新, 现在我们用的是全新的 gymnasium 和 mujoco python !!! 不是gym, 不是mujoco, 也不是 mujoco_py. (那些旧的环境依然在使用mujoco_py. 但是它们往往有着相同功能的, 且不依赖mujoco_py的, 基于mujoco python 的新版本. )
我不知道在windows系统上是否还是这样, 我也不知道有没有那些配置是我在之前就折腾好的, 我只知道, 我在一个新环境中运行上面两行命令, 等待了一会, 一个崭新的RL实验环境就配好了.
如果大家遇到了别的报错或者什么问题, 并且开始在网络上寻找答案, 一定一定记得: 1. 找官方文档优先!!! 2. 找近期的消息优先!!! 在这个环境的配置上, 消息的时效性太重要了!!
[!missing]
从这里开始都是安装 mujoco_py 的过程. 对于真正配备gym环境没有指导价值.
参考资料
https://gymnasium.farama.org/introduction/basic_usage/
https://blog.csdn.net/zjh2883/article/details/136037838
[!caution]
使用pip而不是conda安装. 只有这样才能下载gym[all]
中的所有依赖, 正常运行其中的环境
[!caution]
下载gym[box2d]
时, 会报错提示 swig异常. 此时安装swig即可.
运行CartPoleJax-v0时, 提示
No module named 'jax'
运行
Reacher-v2
提示gymnasium.error.DependencyNotInstalled: No module named 'mujoco_py'.
下载mujoco
按照教程![https://github.com/openai/mujoco-py?tab=readme-ov-file]
和
https://blog.csdn.net/weixin_42571906/article/details/131855836
的前半段. 做到 python setup.py install
后停止.
setup完毕
尝试运行.
报错
1 | Mujoco-py is incompatible with cython 3 (Cannot assign type 'void (const char *) except * nogil' to 'void (*)(const char *) noexcept nogil) #773 |
https://github.com/openai/mujoco-py/issues/773 中发现要安装 “cython < 3”
运行. 报错
1 | fatal error: GL/osmesa.h: No such file or directory |
底下还有一大坨 exception.
根据
https://askubuntu.com/questions/306703/compile-opengl-program-missing-gl-gl-h
的高赞回答, 获取并更新了
apt-file
, 运行了apt-file search "/usr/include/GL/gl.h
. 找到了
libgl-dev: /usr/include/GL/gl.h
, 然后运行了
apt-get install libgl-dev
该报错解决.
提示添加环境变量. 但是环境变量已经添加了啊?
重新运行, 又提示
1 | fatal error: GL/osmesa.h: No such file or directory |
于是才发现前面搜索名字搜错了. 重新搜索找到了 apt-file search "osmesa.h"
进行添加sudo apt-get install libosmesa6-dev
在pychram直接运行时, 提示未添加环境变量.
在终端运行时, 提示
1 | gymnasium.error.DependencyNotInstalled: No module named 'mujoco'. (HINT: you need to install mujoco, run `pip install gymnasium[mujoco] |
于是运行添加.
提示:
1 | xkbcommon: ERROR: failed to add default include path /home/rikka/anaconda3/envs/RLenv/share/X11/xkb |
没有找到这个问题的解决方法.
后面重新找了一篇教程, 跟着一步一步做. 于是
这个报错那篇教程的方法不管用
mujoco_py.cymj.GlfwError: Failed to initialize GLFW
于是参照了这个教程.
https://zhuanlan.zhihu.com/p/606587933
但是怎么样也解决不了. 最终痛定思痛, 选择了
https://zhuanlan.zhihu.com/p/426053896
重头来过一版mujoco2.0.0
终于, 根据指引仔细求索, 中间还搞了点显卡的东西, 然后发现这些玩意和显卡无关. 最后成功导入了mujoco.
然后, 发现大部分最新的模型根本运行不了. 而旧的模型也由于老旧导致报了各种错误. 终结下来没一个能跑的
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
然后, 提示里说要求mujoco版本在2.3以上, 我才发现原来mojoco_py很麻烦, 但是mojoco python 是可以直接pip的.
哈哈哈哈哈哈哈哈哈哈哈哈
…