使用gym创建FrostbiteDeterministic-v4环境报NameNotFound错误咨询
问题根因
这个NameNotFound报错确实是高版本OpenAI Gym的环境拆分规则导致的。
Gym 0.21.0之后的版本,把所有Atari系列游戏环境(包括FrostbiteDeterministic-v4)从核心库中剥离了,不再默认随Gym主包安装。这类Atari环境的运行依赖独立的Atari学习环境(ALE)组件,没装对应依赖时,Gym核心库的注册表中找不到对应环境ID,就会抛出你看到的环境不存在错误。
你查到的早期可直接运行的案例,都是基于0.21.0之前的老版本Gym,当时Atari环境是直接内置在主安装包里的,不需要额外装依赖。
修复方案
按以下步骤操作即可正常调用环境:
- 安装匹配版本的依赖,执行命令:
pip install "gym[atari,accept-rom-license]==0.25.2" ale-py==0.7.5
注意:安装参数里的accept-rom-license是自动同意Atari游戏ROM的版权许可,不加这个参数会因为ROM授权问题无法加载环境;另外不要安装0.26.0及以上版本的Gym,这类版本API改动较大,和你现有代码里reset、step的返回参数逻辑不兼容,运行会报参数错误。 - 安装完成后如果还是提示找不到环境,在原有代码的
import gym语句下加一行导入语句,触发Atari环境的注册逻辑:import gym.envs.atari - 可以用下面的代码快速验证环境是否注册成功:
import gym import gym.envs.atari from gym import envs target_envs = [e.id for e in envs.registry.all() if 'FrostbiteDeterministic' in e.id] print(target_envs)
运行后能看到输出包含FrostbiteDeterministic-v4就说明环境可以正常调用了。
补充说明
FrostbiteDeterministic-v4是Atari游戏《Frostbite》的确定性封装变体,固定了帧跳过规则、动作生效逻辑,是强化学习Atari基准测试里的常用环境,必须依赖ALE组件才能运行,不属于Gym核心库维护的经典控制类环境范畴。
内容的提问来源于stack exchange,提问作者desert_ranger
相关产品推荐
相关产品推荐

