导入环境OpenAI Gym报错

Error in importing environment OpenAI Gym

我正在尝试 运行 OpenAI Gym 环境,但出现以下错误:

import gym
env = gym.make('Breakout-v0')

错误

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ale_py/gym/environment.py:11: DeprecationWarning: Importing atari-py roms won't be supported in future releases of ale-py.
  import ale_py.roms as roms
A.L.E: Arcade Learning Environment (version +a54a328)
[Powered by Stella]
Traceback (most recent call last):
  File "/Users/username/Desktop/OpenAI Gym Stuff/OpenAI_Exp.py", line 2, in <module>
    env = gym.make('Breakout-v0')
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/gym/envs/registration.py", line 200, in make
    return registry.make(id, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/gym/envs/registration.py", line 105, in make
    env = spec.make(**kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/gym/envs/registration.py", line 75, in make
    env = cls(**_kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ale_py/gym/environment.py", line 123, in __init__
    self.seed()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ale_py/gym/environment.py", line 171, in seed
    raise error.Error(
gym.error.Error: Unable to find game "Breakout", did you import Breakout with ale-import-roms?

代码适用于 gym 0.18.00.19.0 但不适用于 0.20.0

您可以通过

降级
pip install --upgrade gym==0.19.0

顺便说一句:可能还需要安装 gym[atari]gym[all] 才能使所有元素正常工作。


根据 Release Note for 0.21.0 中的信息(在 pip 上尚未准备好,但您可以从 GitHub 安装)ALE 中有一些变化(Arcade Learning Environment) 它造成了所有问题,但它已在 0.21.0.

中修复

-The old Atari entry point that was broken with the last release and the upgrade to ALE-Py is fixed

但新 gym[atari] 不安装 ROM,您将需要使用模块 AutoROM

-pip install gym[atari] no longer distributes Atari ROMs that the ALE (the Atari emulator used) needs to run the various games. The easiest way to install ROMs into the ALE has been to use AutoROM.


编辑:

来自 GitHub 的版本 0.21.0 安装后对我有效

(可能需要程序 git

pip install --upgrade git+https://github.com/openai/gym
pip install autorom

AutoRom    

pip install --upgrade gym[atari]

AutoRom 运行程序询问您是否有 ROM 的许可证并在 AutoROM/roms 中安装 ROM,但我不必将 ROM 移动到其他地方。

AutoROM will download the Atari 2600 ROMs.
They will be installed to:
    /usr/local/lib/python3.8/dist-packages/AutoROM/roms

Existing ROMs will be overwritten.

I own a license to these Atari 2600 ROMs.
I agree to not distribute these ROMs and wish to proceed: [Y/n]:

Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/adventure.bin                                                                                                                           
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/air_raid.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/alien.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/amidar.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/assault.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/asterix.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/asteroids.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/atlantis.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/atlantis2.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/backgammon.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/bank_heist.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/basic_math.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/battle_zone.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/beam_rider.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/berzerk.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/blackjack.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/bowling.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/boxing.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/breakout.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/carnival.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/casino.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/centipede.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/chopper_command.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/combat.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/crazy_climber.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/crossbow.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/darkchambers.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/defender.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/demon_attack.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/donkey_kong.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/double_dunk.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/earthworld.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/elevator_action.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/enduro.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/entombed.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/et.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/fishing_derby.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/flag_capture.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/freeway.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/frogger.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/frostbite.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/galaxian.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/gopher.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/gravitar.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/hangman.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/haunted_house.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/hero.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/human_cannonball.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/ice_hockey.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/jamesbond.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/journey_escape.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/joust.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/kaboom.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/kangaroo.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/keystone_kapers.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/king_kong.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/klax.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/koolaid.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/krull.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/kung_fu_master.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/laser_gates.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/lost_luggage.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/mario_bros.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/maze_craze.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/miniature_golf.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/montezuma_revenge.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/mr_do.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/ms_pacman.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/name_this_game.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/othello.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/pacman.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/phoenix.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/pitfall.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/pitfall2.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/pong.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/pooyan.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/private_eye.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/qbert.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/riverraid.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/road_runner.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/robotank.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/seaquest.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/sir_lancelot.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/skiing.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/solaris.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/space_invaders.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/space_war.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/star_gunner.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/superman.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/surround.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/tennis.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/tetris.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/tic_tac_toe_3d.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/time_pilot.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/trondead.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/turmoil.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/tutankham.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/up_n_down.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/venture.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/video_checkers.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/video_chess.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/video_cube.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/video_pinball.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/warlords.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/wizard_of_wor.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/word_zapper.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/yars_revenge.bin
Installed /usr/local/lib/python3.8/dist-packages/AutoROM/roms/zaxxon.bin
Done!

安装后,这段代码对我有用,没有错误,也没有 DeprecationWarning

import gym
import ale_py

print('gym:', gym.__version__)
print('ale_py:', ale_py.__version__)

env = gym.make('Breakout-v0')

它给出

gym: 0.21.0
ale_py: 0.7.1

A.L.E: Arcade Learning Environment (version +b7b0c1a)
[Powered by Stella]
pip install gym[atari,accept-rom-license]==0.21.0

可以用conda解决:

  1. 安装 gym 版本 0.19.0,

    conda install -c conda-forge gym=0.19.0;
    
  2. 通过

    安装atari_py
    conda install -c conda-forge atari_py;
    
  3. 下载 Roms,并解压缩 RAR。

  4. 打开一个终端,激活你的环境,然后输入:

    python -m atari_py.import_roms \<path to folder\>, 
    

    哪个会复制 指定文件夹中的 ROM 到 pkg 文件夹。

这通过终端对我有用:

pip install gym[atari]
pip install autorom[accept-rom-license]

安装gym后是80场。安装gym[atari]后,是267个游戏。而且您必须接受特定许可才能激活其他游戏。

即使使用较新的健身房也可以实现这一点(在我的例子中是 windows 环境中的 0.24.0)。下载 ROM(通过 AutoROM)并通过 ale-import-roms 安装 ROM 后,您需要将环境变量 ALE_PY_ROM_DIR 设置为 bins 的目录。

在 python 中(在我的例子中是 Jupyter - environment-variable 必须事先定义,当然)你需要:

from ale_py import ALEInterface
ale = ALEInterface()

在此之后您可以(使用命名空间 ALE/)例如

from ale_py.roms import SpaceInvaders
ale.loadROM(SpaceInvaders)
env = gym.make('ALE/SpaceInvaders-v5')