29

I am trying to use the famous 'Gym' module from OpenAI on WSL and executing code on python 3.5.2.
When I try to run an environment as explained here, using the code:

import gym
env = gym.make('CartPole-v0')
for i_episode in range(20):
    observation = env.reset()
    for t in range(100):
        env.render()
        print(observation)
        action = env.action_space.sample()
        observation, reward, done, info = env.step(action)
        if done:
            print("Episode finished after {} timesteps".format(t+1))
            break

this happens:

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
  File "/home/DrHofstadter/gym/gym/core.py", line 153, in render
    return self._render(mode=mode, close=close)
  File "/home/DrHofstadter/gym/gym/core.py", line 285, in _render
    return self.env.render(mode, close)
  File "/home/DrHofstadter/gym/gym/core.py", line 153, in render
    return self._render(mode=mode, close=close)
  File "/home/DrHofstadter/gym/gym/envs/classic_control/cartpole.py", line 114, in _render
    from gym.envs.classic_control import rendering
  File "/home/DrHofstadter/gym/gym/envs/classic_control/rendering.py", line 23, in <module>
    from pyglet.gl import *
  File "/home/DrHofstadter/.local/lib/python3.5/site-packages/pyglet/gl/__init__.py", line 224, in <module>
    del base
NameError: name 'base' is not defined

The problem is similar to this question nothing is being rendered. (The gitterforum link given in question doesn't work anymore.)

Diggy.
  • 6,744
  • 3
  • 19
  • 38
Suprabhat
  • 323
  • 4
  • 8

3 Answers3

1

This may not be a perfect answer to this question but this is my experience how I resolved this problem.

I was getting the same error when I running my programme from the spyder. but when I execute the same code from the terminal it didn't throw any error. but make your locale is correctly configured for the gym environment.

ujjal das
  • 897
  • 11
  • 15
1

Please try

git clone https://github.com/openai/gym.git
cd gym
pip install -e .

Or,

pip install pyglet
Andrei R.
  • 166
  • 1
  • 2
1

Please show us pyglet and gym versions and we can compare them. You can delete all gym and after reinstall with pip install 'gym[all]'. Additionally, if you work on Colab or Jupyter you can add a display like below ( I think you work on a notebook) you can add some supports like xvfb and opengl for the support virtual display.
If you use Linux basically install with

apt-get install -y xvfb python-opengl > /dev/null 2>&1
pip install gym pyvirtualdisplay > /dev/null 2>&1

after that, you must change your code like below format

Libraries

import gym
import numpy as np
import matplotlib.pyplot as plt
from IPython import display as ipythondisplay
from pyvirtualdisplay import Display

Started virtual display

display = Display(visible=0, size=(400, 300))
display.start()

Now Finish move

env = gym.make('CartPole-v0')
for i_episode in range(20):
   observation = env.reset()
   for t in range(100):
      plt.imshow(env.render(mode='rgb_array'))# CHANGED
      ipythondisplay.clear_output(wait=True) # ADDED
      ipythondisplay.display(plt.gcf()) # ADDED
      print(observation)
      action = env.action_space.sample()
      observation, reward, done, info = env.step(action)
      if done:
         print("Episode finished after {} timesteps".format(t+1))
         break
β.εηοιτ.βε
  • 33,893
  • 13
  • 69
  • 83
vaizars
  • 11
  • 3