我正在与RL代理合作,并试图复制本文的发现,其中他们基于Gym开放AI制作自定义跑酷环境,然而当我试图渲染这个环境时,我遇到了。
import numpy as np
import time
import gym
import TeachMyAgent.environments
env = gym.make('parametric-continuous-parkour-v0', agent_body_type='fish', movable_creepers=True)
env.set_environment(input_vector=np.zeros(3), water_level = 0.1)
env.reset()
while True:
_, _, d, _ = env.step(env.action_space.sample())
env.render(mode='human')
time.sleep(0.1)
c:usersmanu dwivediteachmyagentTeachMyAgentenvironmentsenvsparametric_continuous_parkour.py in render(self, mode, draw_lidars)
462
463 def render(self, mode='human', draw_lidars=True):
--> 464 from gym.envs.classic_control import rendering
465 if self.viewer is None:
466 self.viewer = rendering.Viewer(RENDERING_VIEWER_W, RENDERING_VIEWER_H)
ImportError: cannot import name 'rendering' from 'gym.envs.classic_control' (C:ProgramDataAnaconda3envsteachagentlibsite-packagesgymenvsclassic_control__init__.py)
[1]: https://github.com/flowersteam/TeachMyAgent
我认为这可能是这个自定义环境的问题,以及作者如何决定渲染它,然而,当我尝试只是
from gym.envs.classic_control import rendering
我遇到了同样的错误,github用户在这里建议这可以通过在调用gym.make()
渲染时添加rendor_mode='human'
来解决,但这似乎只适用于他们的特定情况。
我(在一个同学的帮助下)通过将gym
包降级到0.21.0来工作。执行pip install gym==0.21.0
命令。
更新,来自Github issue:
基于https://github.com/openai/gym/issues/2779
这应该是gymgrid的问题,有一个开放的PR: wsgdrfz/gymgrid#1如果你想使用gym的最新版本,你可以尝试使用该PR的分支(https://github.com/CedricHermansBIT/gymgrid2);你可以用pip install gymgrid2