Search code examples
pythonopenglrenderreinforcement-learningpyglet

ImportError: Error occured while running `from pyglet.gl import *` while handling exception :Library "GL" not found


My python code for a reinforcement task cannot render when I run it in docker. I tried installing GL when I got the import error but it still gives me the same error. Is there ay other way to fix this without messing with package managers?

Error message:

/usr/local/lib/python3.7/site-packages/gym/logger.py:30: UserWarning: WARN: Box bound precision lowered by casting to float32
warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))
Episode 0
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/lbforaging/foraging/rendering.py", line 33, in <module>
  from pyglet.gl import *
File "/usr/local/lib/python3.7/site-packages/pyglet/gl/__init__.py", line 95, in <module>
  from pyglet.gl.lib import GLException
File "/usr/local/lib/python3.7/site-packages/pyglet/gl/lib.py", line 149, in <module>
  from pyglet.gl.lib_glx import link_GL, link_GLU, link_GLX
File "/usr/local/lib/python3.7/site-packages/pyglet/gl/lib_glx.py", line 45, in <module>
  gl_lib = pyglet.lib.load_library('GL')
File "/usr/local/lib/python3.7/site-packages/pyglet/lib.py", line 164, in load_library
  raise ImportError('Library "%s" not found.' % names[0])
ImportError: Library "GL" not found.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "if.py", line 106, in <module>
  env.render()
File "/usr/local/lib/python3.7/site-packages/lbforaging/foraging/environment.py", line 501, in render
  self._init_render()
File "/usr/local/lib/python3.7/site-packages/lbforaging/foraging/environment.py", line 494, in 
 _init_render
from .rendering import Viewer
File "/usr/local/lib/python3.7/site-packages/lbforaging/foraging/rendering.py", line 41, in <module>
  """
ImportError:
Error occured while running `from pyglet.gl import *`
HINT: make sure you have OpenGL install. On Ubuntu, you can run 'apt-get install python-opengl'.
If you're running on a server, you may need a virtual frame buffer; something like this should work:
'xvfb-run -s "-screen 0 1400x900x24" python <your_script.py>'

pip3 install GL says requirement already satisfied and gives the same error "GL not found" and pip3 install OpenGL gives:

ERROR: Could not find a version that satisfies the requirement OpenGL
ERROR: No matching distribution found for OpenGL

Solution

  • You need an older version of pyglet; Installing it via pip should do the trick:

    pip install pyglet==1.5.11
    

    Further discussion here:

    https://github.com/openai/gym/issues/2101