首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在windows python中使用健身房atari (0.9.5版)

在windows python中使用健身房atari (0.9.5版)
EN

Stack Overflow用户
提问于 2021-05-21 22:14:20
回答 1查看 2.5K关注 0票数 0

我试图在0.9.5版上安装健身房atari包(我特别需要这个版本),但是当我运行代码(如果正确下载健身房的话,代码应该运行平稳),我会得到以下错误:

代码语言:javascript
运行
复制
AttributeError: 'AtariEnv' object has no attribute 'viewer'

当我试图运行gym.make()时,问题就发生了。

有人知道怎么解决这个问题吗?

在python3.9中,同样的行为也发生在我身上,但出于某些原因,python3.8(那里有一个不同的错误)没有发生。也许我错过了一些渲染库?

完整的错误消息是:

代码语言:javascript
运行
复制
[2021-05-22 02:17:05,405] Making new env: PongNoFrameskip-v4
C:\Users\1\PycharmProjects\University Homework\venv37\lib\site-packages\gym\envs\registration.py:17: PkgResourcesDeprecationWarning: Parameters to load are deprecated.  Call .resolve and .require separately.
  result = entry_point.load(False)
Traceback (most recent call last):
  File "C:/Users/1/PycharmProjects/University Homework/Reinforcement Learning/dqn/main.py", line 61, in <module>
    env = get_env(task, seed)
  File "C:\Users\1\PycharmProjects\University Homework\Reinforcement Learning\dqn\utils\gym.py", line 13, in get_env
    env = gym.make(env_id)
  File "C:\Users\1\PycharmProjects\University Homework\venv37\lib\site-packages\gym\envs\registration.py", line 164, in make
    return registry.make(id)
  File "C:\Users\1\PycharmProjects\University Homework\venv37\lib\site-packages\gym\envs\registration.py", line 122, in make
    env = spec.make()
  File "C:\Users\1\PycharmProjects\University Homework\venv37\lib\site-packages\gym\envs\registration.py", line 89, in make
    env = cls(**self._kwargs)
  File "C:\Users\1\PycharmProjects\University Homework\venv37\lib\site-packages\gym\envs\atari\atari_env.py", line 32, in __init__
    self.game_path = atari_py.get_game_path(game)
  File "C:\Users\1\PycharmProjects\University Homework\venv37\lib\site-packages\atari_py\games.py", line 20, in get_game_path
    raise Exception('ROM is missing for %s, see https://github.com/openai/atari-py#roms for instructions' % (game_name,))
Exception: ROM is missing for pong, see https://github.com/openai/atari-py#roms for instructions
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
  File "C:\Users\1\PycharmProjects\University Homework\venv37\lib\site-packages\gym\utils\closer.py", line 67, in close
    closeable.close()
  File "C:\Users\1\PycharmProjects\University Homework\venv37\lib\site-packages\gym\core.py", line 164, in close
    self.render(close=True)
  File "C:\Users\1\PycharmProjects\University Homework\venv37\lib\site-packages\gym\core.py", line 150, in render
    return self._render(mode=mode, close=close)
  File "C:\Users\1\PycharmProjects\University Homework\venv37\lib\site-packages\gym\envs\atari\atari_env.py", line 109, in _render
    if self.viewer is not None:
AttributeError: 'AtariEnv' object has no attribute 'viewer'
Exception ignored in: <function Env.__del__ at 0x00000203EE2174C8>
Traceback (most recent call last):
  File "C:\Users\1\PycharmProjects\University Homework\venv37\lib\site-packages\gym\core.py", line 203, in __del__
    self.close()
  File "C:\Users\1\PycharmProjects\University Homework\venv37\lib\site-packages\gym\core.py", line 164, in close
    self.render(close=True)
  File "C:\Users\1\PycharmProjects\University Homework\venv37\lib\site-packages\gym\core.py", line 150, in render
    return self._render(mode=mode, close=close)
  File "C:\Users\1\PycharmProjects\University Homework\venv37\lib\site-packages\gym\envs\atari\atari_env.py", line 109, in _render
    if self.viewer is not None:
AttributeError: 'AtariEnv' object has no attribute 'viewer'

此外,有关守则:

代码语言:javascript
运行
复制
if __name__ == '__main__':
    # Get Atari games.
    benchmark = gym.benchmark_spec('Atari40M')
    
    # Change the index to select a different game.
    task = benchmark.tasks[3]
    
    # Run training
    seed = 0 # Use a seed of zero (you may want to randomize the seed!)
    env = get_env(task, seed)

get_env是:

代码语言:javascript
运行
复制
def get_env(task, seed):
    env_id = task.env_id

    env = gym.make(env_id)

    set_global_seeds(seed)
    env.seed(seed)

    expt_dir = 'tmp/gym-results'
    env = wrappers.Monitor(env, expt_dir, force=True)
    env = wrap_deepmind(env)

    return env
EN

回答 1

Stack Overflow用户

发布于 2021-10-17 07:37:28

这个错误看起来像是找不到用于乒乓的Atari。这可能是由于健身房不再自动安装ROM,因为许可证问题。

但现在有一个简单的解决办法:

代码语言:javascript
运行
复制
pip install -U gym
pip install -U gym[atari,accept-rom-license]

accept-rom-license选项安装一个名为autorom的包,该包提供AutoROM命令,并使用--accept-rom-license选项自动运行。

那么一切都正常了。

详细信息:

如果您在运行AutoROM时不使用--accept-license选项,这就是您得到的结果,因此请注意:

代码语言:javascript
运行
复制
AutoROM will download the Atari 2600 ROMs.
They will be installed to:
    [...]/site-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]:

运行AutoROM --help获取更多选项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67644369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档