OpenAI Gym 0.10.3版本添加超级马里奥环境的替代方案求助
解决OpenAI Gym 0.10.3添加超级马里奥环境的替代方案
Great question! You don't need to downgrade Gym 0.10.3 to get Super Mario Bros up and running—here are a few solid alternatives that work around the missing scoreboard folder and broken gym_pull:
1. 使用独立的gym-super-mario-bros包
这个是社区维护的专门针对马里奥的Gym环境包,完全脱离了旧的gym_pull依赖,适配较新的Gym版本(包括0.10.3)。
- 首先安装包:
pip install gym-super-mario-bros - 然后直接在代码中使用:
import gym import gym_super_mario_bros from nes_py.wrappers import JoypadSpace from gym_super_mario_bros.actions import SIMPLE_MOVEMENT # 创建环境并包装动作空间 env = gym.make('SuperMarioBros-v0') env = JoypadSpace(env, SIMPLE_MOVEMENT) # 运行环境示例 done = True for step in range(5000): if done: state = env.reset() state, reward, done, info = env.step(env.action_space.sample()) env.render() env.close()
这个包自带NES模拟器的封装,不需要额外配置,是最省心的方案。
2. 手动移植马里奥环境文件到本地Gym目录
如果你偏好手动配置,可以找到旧版马里奥环境的源码,直接放到Gym的本地目录中:
- 首先获取
super_mario_bros环境的代码,将其文件夹放到你的Gym安装路径下的gym/envs/目录中(比如lib/pythonX.X/site-packages/gym/envs/super_mario_bros)。 - 打开
gym/envs/__init__.py,添加环境的导入语句:from gym.envs.super_mario_bros.super_mario_bros_env import SuperMarioBrosEnv - 打开
gym/envs/registration.py,注册环境:register( id='SuperMarioBros-v0', entry_point='gym.envs.super_mario_bros:SuperMarioBrosEnv', ) - 完成后就可以像普通Gym环境一样用
gym.make('SuperMarioBros-v0')调用了。
3. 使用Gym的自定义环境注册机制(无需修改Gym源码)
如果不想改动Gym的安装文件,可以手动注册自定义环境:
- 先获取马里奥环境的Python类文件(比如
super_mario_bros_env.py),确保它在你的Python项目路径中。 - 在代码中手动注册环境:
import gym from gym.envs.registration import register # 注册自定义马里奥环境 register( id='SuperMarioBros-v0', entry_point='super_mario_bros_env:SuperMarioBrosEnv', # 替换为你的类路径 max_episode_steps=9999999, reward_threshold=32000, ) # 创建环境 env = gym.make('SuperMarioBros-v0')
这种方式更灵活,不会影响全局的Gym安装,适合项目级别的配置。
内容的提问来源于stack exchange,提问作者Raja
相关产品推荐
相关产品推荐

