Error following env.render() for OpenAI

2020-08-26 03:50发布

问题:

I am trying to get the code below to work.

import gym

env = gym.make("CartPole-v0")

env.reset()

env.render()

I have no problems running the first 3 lines but when I run the 4th I get the error:

Traceback (most recent call last):

  File "<ipython-input-3-a692a1a1ffe7>", line 1, in <module>
    env.render()

  File "/home/mikedoho/gym/gym/core.py", line 150, in render
    return self._render(mode=mode, close=close)

  File "/home/mikedoho/gym/gym/core.py", line 286, in _render
    return self.env.render(mode, close)

  File "/home/mikedoho/gym/gym/core.py", line 150, in render
    return self._render(mode=mode, close=close)

  File "/home/mikedoho/gym/gym/envs/classic_control/cartpole.py", line 116, in _render
    self.viewer = rendering.Viewer(screen_width, screen_height)

  File "/home/mikedoho/gym/gym/envs/classic_control/rendering.py", line 51, in __init__
    self.window = pyglet.window.Window(width=width, height=height, display=display)

  File "/home/mikedoho/anaconda3/lib/python3.6/site-packages/pyglet/window/__init__.py", line 504, in __init__
    screen = display.get_default_screen()

  File "/home/mikedoho/anaconda3/lib/python3.6/site-packages/pyglet/canvas/base.py", line 73, in get_default_screen
    return self.get_screens()[0]

  File "/home/mikedoho/anaconda3/lib/python3.6/site-packages/pyglet/canvas/base.py", line 65, in get_screens
    raise NotImplementedError('abstract')

NotImplementedError: abstract

I was hoping to get a cart on a pole to display in a new window.

This error is from code in Spyder. I am using ubuntu 16.04; python 3.6.3; IPython 6.1.0. I have not any luck using jupyter notebook.

Again I apologize. I am very new at this an just downloaded ubuntu today.

回答1:

I just resolved this (bug?), like 10 minutes ago :D

You have to downgrade pyglet 3 to pyglet 1.2.4. just type: pip install pyglet==1.2.4 in your anaconda prompt. Afterwards you might have to restart your spyder ide.

I would add env.close() to your code, otherwise you will have troubles closing the window.

if you are new to python/ML/DL have a look at "sentdex" on youtube. imo very good content to start with. (he uses TFlearn in his gym tutorial) But since tensorflow 1.4 has Keras included, i would suggest to use keras high lvl API for your neural network.

good luck and stay deep

if someone has a good gym documentation, feel free to share it.