2022.06.07
Cauchyoooo
Windows10搭建Gym-Atari环境
本人由于做某个大作业,需要用到强化学习。各种教程参差不齐(比如各种转载复制粘贴的),导致我踩了很多坑。
参考仅供参考。
可涉及的版本号(仅供参考)
python = 3.9.7
gym = 0.24.0
gym-notices = 0.0.7
ale-py = 0.7.5
atari-py = 1.2.2
1.VS下载安装(C++编译器)
这里是为了避免“ale_interface/ale_c.dll OSError: [WinError 126] 找不到指定的模块”这一个error。
VS下载链接:https://visualstudio.microsoft.com/zh-hans/downloads/
勾选红框此项安装
2.pip安装各种库
win
+r
打开运行,输入cmd
,打开命令行(或者Anaconda Prompt)看自己python环境配置吧,如果Anaconda有新建虚拟环境,记得conda activate [虚拟环境名]切换环境。(如何创建虚拟环境可参考:https://zhuanlan.zhihu.com/p/94744929,镜像可以加速下载啥的)
由于本人也在踩坑过程中反复install和uninstall,所以下面部分库是必需的,部分库是多余的。
pip install gym[atari]
这条会装下图所示的一些包,因为我已经装了,就展示一下。
pip install ale-py
以上两个应该是必要的,以下的就不知道了。
有的教程说要装cmake,我现在也不知道要不要。这个东西用清华的镜像源下载比较块。
pip install cmake
这个我也不知道具体什么用的,经常超时(没科学上网,github随缘)
pip install --no-index-f https://github.com/Kojoley/atari-py atari_py
游戏开发模块,计算机视觉库…?
pip install pyglet
pip install opencv-python
3.导入ROMS
据说是版本更替问题,导致需要手动导入某些东西。
就是这个Error
先到网站[http://www.atarimania.com/rom_collection_archive_atari_2600_roms.html]下载
然后解压
然后有人告诉你要用,命令行进入到这个ROMS文件夹所在的文件夹,图中是Roms,然后运行该命令
ale-import-roms ROMS/
路径对了,能行就行。反正我是跑几次都RunTime Error,就放弃这条命令了。
那么上面那条就不管了,改用AutoRom辅助导入ROMS。
pip install autorom
然后再输入
AutoROM --accept-license
就会自动导入了。楼主这步能成功导入ROMS了,如果报错可能就要出门右转自己查了。
4.代码测试
楼主用的Anaconda
1)检验gym是否成功安装
import gym
下面就是没什么大碍,能用。
2)打印游戏目录
from gym import envs
env_names = [spec.id for spec in envs.registry.all()]
for name in sorted(env_names):
print(name)
反正能跑,主要是看名字的。
3)跑游戏
env = gym.make("Pong-ram-v4", render_mode='human')
observation = env.reset()
for _ in range(1000):
# env.render()
action = env.action_space.sample()
observation, reward, done, info = env.step(action)
if done:
observation = env.reset()
env.close()
这里注释掉了env.render()
,很多代码示例都是env=gym.make("xxx")
,然后在循环里用env.render()
,我认为是版本问题,我如果用那个代码,会给我报错TypeError render() missing 1 required positional argument: ‘mode’,我另一个同学用gym==0.19.0那个版本就不会。然后根据官方提示,这个render有三种模式human
,rgb_array
,ansi
,具体的可跳转该博客Desny的博客了解。
这个版本就要在环境创建的时候选择render_mode
。
然后这里跑出来是这样的,运动不会很快。有的动画会跑很快,我也不晓得是啥子原因,查过又忘了。OHHHHH
5.吐槽
楼主刚跑出来就来写blog了,可能还有很多其他的bug没有照顾到的。菜菜,捞捞,勿喷。
对了,我还遇到过ModuleNotFoundError: No module named ‘gym.envs.atari这个报错,可能是我后面Anaconda里面的包卸载重装还是啥导致一些文件丢失啥的造成的,我把python下的Lib/site-packages里关于gym和ale的包复制到Anaconda的Lib/site-packages里覆盖就没事了,当然也有人说是缺少那个pip install --no-index-f https://github.com/Kojoley/atari-py atari_py
,咱不得而知。