我正在尝试运行此代码,但无法解决此错误。
请指出这里出了什么问题,并在可能的情况下链接一些文档/文章。
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'
答案 0 :(得分:0)
注意错误信息:
TypeError: __init__() missing 1 required positional argument: 'save_root'
只需添加 save_root
作为另一个参数。
像这样:env = GridRecorder(env,"save_root", render_kwargs={"tile_size": 11})
它将开始工作。
请务必安装 moviepy
和 PYOPENGL
。
以下是 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
猜测。