'Getting " AttributeError: 'ImageData' object has no attribute 'data' " in headless gym jupyter Python 2.7
I am trying to run gym in headless server and render the same in jupyter. Python version 2.7.
I have started the jupyter using xvfb-run -a -s "-screen 0 1400x900x24" jupyter notebook
Below is the Jupyte cell that I run.
import matplotlib.pyplot as plt
import gym
from IPython import display
%matplotlib inline
env = gym.make('CartPole-v0')
env.reset()
plt.imshow(env.render(mode='rgb_array'))
display.display(plt.gcf())
display.clear_output(wait=True)
env.step(env.action_space.sample()) # take a random action
env.close()
But the error I get is as below :
AttributeError: 'ImageData' object has no attribute 'data'
I have searched a lot in forums but could not find a solution. Thanks in advance to help me fix this error and make me to render gym in jupyter notebook.
Solution 1:[1]
I encountered the same issue. Installing pyglet-v1.3.2 instead of v1.4.1 solved the issue for me.
Solution 2:[2]
I have python 3.7 and for my upgrading to gym 0.18.2 solved the problem (with pyglet 1.5.5)
Solution 3:[3]
For what it's worth, like @patapouf_ai I upgraded from gym 0.9.6 to gym 0.19.0 and this solved the problem. It seems the root issue is that mode=rgb_mode returned error when passed into env.render.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | David |
| Solution 2 | patapouf_ai |
| Solution 3 | Stan Lin |

