问题描述
安装ale-py以后,发现还需要导入ROM,参考了
ModuleNotFoundError: No module named ‘ale_python_interface‘ 解决方案
的方法折腾了一通以后,在ale-import-roms
这个命令翻车了,报错RuntimeError:
(hunter) PS E:\Download\Roms> ale-import-roms .\ROMS\
Traceback (most recent call last):
File "D:\ProgramData\Miniconda3\envs\hunter\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "D:\ProgramData\Miniconda3\envs\hunter\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "D:\ProgramData\Miniconda3\envs\hunter\Scripts\ale-import-roms.exe\__main__.py", line 7, in <module>
File "D:\ProgramData\Miniconda3\envs\hunter\lib\site-packages\ale_py\scripts\import_roms.py", line 93, in main
import_roms(romdir, datadir, pkg=args.import_from_pkg, dry_run=args.dry_run)
File "D:\ProgramData\Miniconda3\envs\hunter\lib\site-packages\ale_py\scripts\import_roms.py", line 25, in import_roms
rom = ale_py.ALEInterface.isSupportedROM(path)
RuntimeError
解决方法
这个错误貌似在linux上不会出现,定位到出错位置,import_roms.py的第25行:
for path in romdir.glob("**/*.bin"):
rom = ale_py.ALEInterface.isSupportedROM(path)
if rom is not None:
supported[rom] = path
else:
unsupported.append(path)
改为:
for path in romdir.glob("**/*.bin"):
try:
rom = ale_py.ALEInterface.isSupportedROM(path)
if rom is not None:
supported[rom] = path
else:
unsupported.append(path)
except:
pass
保存以后重新执行ale-import-roms .\ROMS\
:
导入了100多个
原因分析
如果在
rom = ale_py.ALEInterface.isSupportedROM(path)
的上一行增加一个临时输出
print(path)
rom = ale_py.ALEInterface.isSupportedROM(path)
保存以后执行ale-import-rom
会有这样的结果:
说明有的ROM包名字出现了法文字符,windows环境下貌似读取会出错,所以索性跳过这些文件。