例外情况:ms_pacman缺少ROM,请参阅https://github.com/openai/ataripy#roms 请示

2024-06-10 13:50:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我对OpenAi健身房是全新的,我刚刚安装了健身房,然后尝试为它创造环境 env = gym.make('MsPacman-v0')因此我得到以下错误:

---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-21-e04adf623175> in <module>
----> 1 env = gym.make('MsPacman-v0')

~\Anaconda3\envs\env_project\lib\site-packages\gym\envs\registration.py in make(id, **kwargs)

~\Anaconda3\envs\env_project\lib\site-packages\gym\envs\registration.py in make(self, path, **kwargs)

~\Anaconda3\envs\env_project\lib\site-packages\gym\envs\registration.py in make(self, **kwargs)

~\Anaconda3\envs\env_project\lib\site-packages\gym\envs\atari\atari_env.py in __init__(self, game, 
mode, difficulty, obs_type, frameskip, repeat_action_probability, full_action_space)

~\Anaconda3\envs\env_project\lib\site-packages\atari_py\games.py in get_game_path(game_name)
 18     path = os.path.join(_games_dir, game_name) + ".bin"
 19     if not os.path.exists(path):
---> 20         raise Exception('ROM is missing for %s, see https://github.com/openai/atari-py#roms 
for instructions' % (game_name,))
 21     return path
 22 

Exception: ROM is missing for ms_pacman, see https://github.com/openai/atari-py#roms for instructions

在此之后,我还试图在web上找到解决方案并下载ROMs,然后点击命令python -m atari_py.import_roms <path where ROMs downloaded>,在运行此命令后,我还遇到以下错误

(env_project) C:\Users\ME>python -m atari_py.import_roms C:\Users\ME\Downloads\roms_folder\

copying adventure.bin from HC ROMS/BY ALPHABET (PAL)/A-G/Adventure (PAL).bin to 
C:\Users\ME\Anaconda3\envs\env_project\lib\site-packages\atari_py\atari_roms\adventure.bin
Traceback (most recent call last):
File "C:\Users\ME\Anaconda3\envs\env_project\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "C:\Users\ME\Anaconda3\envs\env_project\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\ME\Anaconda3\envs\env_project\lib\site-packages\atari_py\import_roms.py", line 93, 
in <module>
main()
File "C:\Users\ME\Anaconda3\envs\env_project\lib\site-packages\atari_py\import_roms.py", line 89, 
in main
import_roms(args.dirpath)
File "C:\Users\ME\Anaconda3\envs\env_project\lib\site-packages\atari_py\import_roms.py", line 78, 
in import_roms
_check_zipfile(f, save_if_matches)
File "C:\Users\ME\Anaconda3\envs\env_project\lib\site-packages\atari_py\import_roms.py", line 23, 
in _check_zipfile
process_f(innerf)
File "C:\Users\ME\Anaconda3\envs\env_project\lib\site-packages\atari_py\import_roms.py", line 67, 
in save_if_matches
f.seek(0)
io.UnsupportedOperation: seek

我不知道我做错了什么。先谢谢你


Tags: pathinpyimportenvprojectlibpackages
3条回答

这个脚本应该可以解决这个问题

import urllib.request
urllib.request.urlretrieve('http://www.atarimania.com/roms/Roms.rar','Roms.rar')
!pip install unrar
!unrar x Roms.rar
!mkdir rars
!mv HC\ ROMS.zip   rars
!mv ROMS.zip  rars
!python -m atari_py.import_roms rars

这可能是由于Python 3.7.0中的ZipFile.seek()中有一个bug:Python issue #34035

您需要升级到最新的Python 3.7.x版本

另外请注意,自gym 0.21以来,您可以通过运行以下命令安装gym并自动获取所有ROM:

pip install "gym[atari,accept-rom-license]"

详细信息:

accept-rom-license选项将安装AutoROM包,该包提供AutoROM命令。它还将使用--accept-license选项自动运行它。或者,您可以pip install autorom并手动运行AutoROM命令。如果您不给它任何选项,这就是它的输出,所以请注意。我的感觉是,将它们用于研究和教育目的是可以的,但我不是律师:

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获取更多选项

下载ROMs后,它将作为Roms.rar在下载文件夹中提供,它在HC ROMS.zip内包含2个zip文件,并且ROMS.zip我必须提取Roms.rar再次提取ROMS.zip。然后运行命令

python -m atari_py.import_roms C:\Users\ME\Downloads\Roms\ROMS

相关问题 更多 >