2

I can't get OpenAI Gym to work on WSL2 Windows 11.

Minimal example

import gym

env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
    env.render()
    env.step(env.action_space.sample()) # take a random action
    env.close()

When i execute the code it opens a window, displays one frame of the env, closes the window and opens another window in another location of my monitor. Most of the time the content of the window is just black, however sometimes it displays the environment correctly. In both cases the window instantly closes itself and opens the next frame somewhere else.

Troubleshooting i did

Xeyes

Running xeyes works just fine and as expected

Pygame

I installed pygame and wrote a minimal example to see if that works

import pygame

pygame.init()
screen = pygame.display.set_mode((400, 300))
done = False

while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
        pygame.draw.rect(screen, (0, 128, 255), pygame.Rect(30, 30, 60, 60))
        pygame.display.flip()

This opens, after a few seconds, a window that displays a recangle - just as expected

Matplotlib

I installed VcXsrv as suggested on thispost regarding wsl and ran a minimal example which worked just as expected as well:

import matplotlib.pyplot as plt

x = [i for i in range(20)]
y = [i ** 2 for i in range(20)]

plt.plot(x, y)
plt.show()

System config

Windows version

Windows 11 - Version 21H2 (Build 22000.194)

WSL Status

wsl --status
Standard Distribution: Ubuntu
Standardversion: 2

Das Windows-Subsystem für Linux wurde zuletzt aktualisiert am 23/09/2021
Der Windows-Subsystem für Linux-Kernel kann mit „wsl --update“ manuell aktualisiert werden. Aufgrund Ihrer Systemeinstellungen können jedoch keine automatischen Updates durchgeführt werden.
Um automatischen Kernel-Updates zu erhalten, aktivieren Sie die Windows Update-Einstellung: „Empfangen von Updates für andere Microsoft-Produkte, wenn Windows aktualisiert wird“.
Weitere Informationen finden Sie unter https://aka.ms/wsl2kernel.

Kernel-Version: 5.10.43

Pip Freeze

buckfae-wsl@buckfae-pc:~$ pip freeze
absl-py==0.14.0
astunparse==1.6.3
attrs==19.3.0
Automat==0.8.0
blinker==1.4
cachetools==4.2.2
certifi==2019.11.28
cffi==1.14.6
chardet==3.0.4
clang==5.0
Click==7.0
cloud-init==20.1
cloudpickle==2.0.0
colorama==0.4.3
command-not-found==0.3
configobj==5.0.6
constantly==15.1.0
cryptography==2.8
cycler==0.10.0
Cython==0.29.24
dbus-python==1.2.16
distro==1.4.0
distro-info===0.23ubuntu1
entrypoints==0.3
flatbuffers==1.12
gast==0.4.0
glfw==2.2.0
google-auth==1.35.0
google-auth-oauthlib==0.4.6
google-pasta==0.2.0
grpcio==1.40.0
gym==0.20.0
h5py==3.1.0
httplib2==0.14.0
hyperlink==19.0.0
idna==2.8
imageio==2.9.0
importlib-metadata==1.5.0
incremental==16.10.1
Jinja2==2.10.1
jsonpatch==1.22
jsonpointer==2.0
jsonschema==3.2.0
keras==2.6.0
Keras-Preprocessing==1.1.2
keyring==18.0.1
kiwisolver==1.3.2
language-selector==0.1
launchpadlib==1.10.13
lazr.restfulclient==0.14.2
lazr.uri==1.0.3
lockfile==0.12.2
Markdown==3.3.4
MarkupSafe==1.1.0
matplotlib==3.4.3
more-itertools==4.2.0
netifaces==0.10.4
numpy==1.19.5
oauthlib==3.1.0
opt-einsum==3.3.0
Pillow==8.3.2
protobuf==3.18.0
pyasn1==0.4.2
pyasn1-modules==0.2.1
pycparser==2.20
pyglet==1.5.21
PyGObject==3.36.0
PyHamcrest==1.9.0
PyJWT==1.7.1
pymacaroons==0.13.0
PyNaCl==1.3.0
pyOpenSSL==19.0.0
pyparsing==2.4.7
pyrsistent==0.15.5
pyserial==3.4
python-apt==2.0.0
python-dateutil==2.8.2
python-debian===0.1.36ubuntu1
PyYAML==5.3.1
requests==2.22.0
requests-oauthlib==1.3.0
requests-unixsocket==0.2.0
rsa==4.7.2
SecretStorage==2.3.1
service-identity==18.1.0
simplejson==3.16.0
six==1.15.0
ssh-import-id==5.10
systemd-python==234
tensorboard==2.6.0
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.0
tensorflow-estimator==2.6.0
tensorflow-gpu==2.6.0
termcolor==1.1.0
Twisted==18.9.0
typing-extensions==3.7.4.3
ubuntu-advantage-tools==20.3
ufw==0.36
unattended-upgrades==0.1
urllib3==1.25.8
wadllib==1.3.3
Werkzeug==2.0.1
wrapt==1.12.1
zipp==1.0.0
zope.interface==4.7.1

TLDR

OpenAI Gym window flickers like crazy on WSL2.

  • I had issues getting mujoco simulator to work under latest WSL2 + Win 11 (note you do not need to have a separate x server now) - I could not get openGL to work so setting LIBGL_ALWAYS_SOFTWARE=1, worked for me. – dgumo Nov 20 '21 at 16:11
  • Not a lot of time has passed but it would be great to know if there has been any updates. Looking to upgrade to Windows 11 so I can use my machine natively with Gym, or if I should just try another method like X11 – Luke Apr 19 '23 at 13:04

0 Answers0