Gym安装Atari环境(Windows,Linux适用)

Gym安装Atari环境(Windows,Linux适用),第1张

Gym配置Atari环境

​ 上文安装的Gym只提供了一些基础的环境,要想玩街机游戏,还需要有Atari的支持。


在官方文档上,Atari环境安装只需要一条命令,但是在安装过程中遇到了不少的典型错误(在win10、Mac、Linux上安装全都遇到了😂),最后折腾了两三天才解决,因此在这里也是准备用一篇文章来记录下安装过程,也希望这篇博客能解决你的问题,节省你的时间。


​ 废话不多说,正式开始:

​ 本文主要环境版本:python:3.7, gym: 0.23.0, atari-py: 1.2.2

​ 强调一点哈,本文是基于上文的内容,在命令行执行:conda activate Gym


​ 官网上描述,Atari的安装可以通过如下命令(官网上只有第一行,后面是需要的依赖):

pip install gym[atari]
pip install opencv-python
pip install ale-py
pip install pyglet

​ 安装后,执行测试代码如下:

import time
import gym

env = gym.make('BreakoutNoFrameskip-v4')
print("Observation Space: ", env.observation_space)
print("Action Space       ", env.action_space)

obs = env.reset()
for i in range(1000):
    env.render()
    action = env.action_space.sample()
    obs, reward, done, info = env.step(action)
    time.sleep(0.01)
env.close()

print(gym.envs.registry.all())

​ 执行如果你报如下错误(哈哈,应当就是这个错误,没啥意外的):

f'We\'re Unable to find the game "{self._game}". Note: Gym no longer distributes ROMs. '
gym.error.Error: We're Unable to find the game "Breakout". Note: Gym no longer distributes ROMs. If you own a license to use the necessary ROMs for research purposes you can download them via `pip install gym[accept-rom-license]`. Otherwise, you should try importing "Breakout" via the command `ale-import-roms`. If you believe this is a mistake perhaps your copy of "Breakout" is unsupported. To check if this is the case try providing the environment variable `PYTHONWARNINGS=default::ImportWarning:ale_py.roms`. For more information see: https://github.com/mgbellemare/Arcade-Learning-Environment#rom-management

​ 主要原因是Gym在某个版本,将一些环境剥离开了,Gym no longer distributes ROMs,Gym不在统一管理Roms了,解决这个问题,主要有两个方法:

  1. 版本回退,gym版本回退至0.19.0,Atari版本回退为0.2.6,执行如下两条命令:

    pip install gym==0.19.0
    pip install atari_py==0.2.6
    
  2. 按照提示,安装Arcade-Learning-Environment,遇到问题不能总是回退版本嘛不是。


不过按照上图官网上的提示,我折腾了半天,愣是不知道怎么做,坑啊。


下面来说下解决方案:

到Atari的[网站](Atari 2600 VCS ROM Collection (atarimania.com))上去下载Roms,下载2600个游戏的rom,下载的文件是Roms.zip。



如果下载速度过慢,可以到这个链接下载.
将压缩包解压,在命令行进入刚才的解压目录的上一层,执行如下命令:

ale-import-roms ROMS/

​ 执行结果如下图所示,导入的游戏数量是看你的环境是否支持的,我电脑上只导入了110个。


​ 按理来说,到这里,总应该是安装完成了吧。


​ 嗯,少年,你想多了!

​ 再次执行测试代码,你就会发现如下错误:

from gym.envs.classic_control import rendering
ImportError: cannot import name 'rendering' from 'gym.envs.classic_control' (/home/lizishu/anaconda3/envs/GymSecond/lib/python3.7/site-packages/gym/envs/classic_control/__init__.py)

​ 哎,有问题就要迎难而上,这个问题主要是由于Gym版本的变化,在某个版本中删除了classic_control包中的rendering文件,那我们就手动把这个文件给加上,

​ rendering文件github地址。


​ 只要把rendering.py复制到你电脑中gym->envs->classic_control中即可。


1.新建rendering.py文件,2.然后将内容复制进去即可。


具体的解决细节可以参考这篇文章。


也是这个问题困扰我的时间最久,怀疑是不是系统问题,于是到linux上按照以上步骤又搞了一圈,嗯,一样的配方、一样的Bug。


少年,你经历过过绝望么,这篇博客写的我都快哭了,一把心酸苦泪。


​ 最后,还是看下我们的测试结果:

​ 测试代码的最后一行:print(gym.envs.registry.all()),会打印出系统支持的环境。


​ 本文的内容到这里就结束了,这也是我学习强化学习环境遇到的第一个大的坑,反反复复折腾了两天。


本文内容全部都是由博主自己进行整理并结合自身的理解进行总结,如果有什么错误,还请批评指正。


​ 如果本文能对你有所帮助,还请给点赞、收藏、关注博主。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/568532.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存