使用 GridRecorder 。类型错误:__init__() 缺少 1 个必需的位置参数:“save_root”

时间:2021-04-03 05:21:18

标签: python

我正在尝试运行此代码,但无法解决此错误。

请指出这里出了什么问题,并在可能的情况下链接一些文档/文章。

from marlgrid.utils.video import GridRecorder
import gym_minigrid

env = gym_minigrid.envs.empty.EmptyEnv(size=10)
env.max_steps = 200

env = GridRecorder(env, render_kwargs={"tile_size": 11})

obs = env.reset()
env.recording = True

count = 0
done = False

while not done:
    act = env.action_space.sample()
    obs, rew, done, _ = env.step(act)
    count += 1

env.export_video("test_minigrid.mp4")

错误

/usr/local/lib/python3.8/dist-packages/gym_minigrid-1.0.2-py3.8.egg/gym_minigrid/roomgrid.py:302: SyntaxWarning: "is" with a literal. Did you mean "=="?
  if front_cell is None or front_cell.type is 'wall':
Traceback (most recent call last):
  File "video_test.py", line 7, in <module>
    env = GridRecorder(env, render_kwargs={"tile_size": 11})
TypeError: __init__() missing 1 required positional argument: 'save_root'

1 个答案:

答案 0 :(得分:0)

注意错误信息:

TypeError: __init__() missing 1 required positional argument: 'save_root'

只需添加 save_root 作为另一个参数。

像这样:env = GridRecorder(env,"save_root", render_kwargs={"tile_size": 11}) 它将开始工作。 请务必安装 moviepyPYOPENGL

以下是 requirements.txt 文件。

certifi==2020.12.5
chardet==4.0.0
cloudpickle==1.6.0
decorator==4.4.2
ez-setup==0.9
gym==0.18.3
gym-minigrid==1.0.2
idna==2.10
imageio==2.9.0
imageio-ffmpeg==0.4.4
llvmlite==0.36.0
marlgrid==0.0.5
moviepy==1.0.3
numba==0.53.1
numpy==1.20.3
Pillow==8.2.0
proglog==0.1.9
pyglet==1.5.15
PyOpenGL==3.1.5
PyOpenGL-accelerate==3.1.5
requests==2.25.1
scipy==1.6.3
tqdm==4.60.0
urllib3==1.26.4

在 VS-Code 中使用 Python 3.9.5 作为解释器。它不适用于 Python 3.8.5 猜测。