На Ubuntu при вызове pyglet.canvas.get_display() ловлю Cannot connect to "None" на Python 3.7.3

На Ubuntu 22.04 установил фреймворк SLM-Lab, а во время начала выполнения кода при вызове pyglet.canvas.get_display() ловлю Cannot connect to "None" на Python 3.7.3

Двое суток гуглю, по факту дело вот в чем - фреймворк думает, что у меня нет монитора или видеокарты. А это мой домашний комп с полноценной убунту. Есть и монитор и карточка GTX 1080.

Вот текст ошибки:

File "run_lab.py", line 99, in <module>
    main()
  File "run_lab.py", line 91, in main
    get_spec_and_run(*args)
  File "run_lab.py", line 75, in get_spec_and_run
    run_spec(spec, lab_mode)
  File "run_lab.py", line 58, in run_spec
    Trial(spec).run()
  File "/root/SLM-Lab/slm_lab/experiment/control.py", line 179, in run
    session_metrics_list = self.run_sessions()
  File "/root/SLM-Lab/slm_lab/experiment/control.py", line 157, in run_sessions
    session_metrics_list = [Session(spec).run()]
  File "/root/SLM-Lab/slm_lab/experiment/control.py", line 118, in run
    self.run_rl()
  File "/root/SLM-Lab/slm_lab/experiment/control.py", line 90, in run_rl
    state = self.env.reset()
  File "/root/SLM-Lab/slm_lab/env/openai.py", line 62, in reset
    self.u_env.render()
  File "/root/miniconda3/envs/lab/lib/python3.7/site-packages/gym/core.py", line 249, in render
    return self.env.render(mode, **kwargs)
  File "/root/miniconda3/envs/lab/lib/python3.7/site-packages/gym/core.py", line 249, in render
    return self.env.render(mode, **kwargs)
  File "/root/miniconda3/envs/lab/lib/python3.7/site-packages/gym/envs/classic_control/cartpole.py", line 150, in render
    from gym.envs.classic_control import rendering
  File "/root/miniconda3/envs/lab/lib/python3.7/site-packages/gym/envs/classic_control/rendering.py", line 27, in <module>
    from pyglet.gl import *
  File "/root/miniconda3/envs/lab/lib/python3.7/site-packages/pyglet/gl/__init__.py", line 232, in <module>
    import pyglet.window
  File "/root/miniconda3/envs/lab/lib/python3.7/site-packages/pyglet/window/__init__.py", line 1918, in <module>
    gl._create_shadow_window()
  File "/root/miniconda3/envs/lab/lib/python3.7/site-packages/pyglet/gl/__init__.py", line 206, in _create_shadow_window
    _shadow_window = Window(width=1, height=1, visible=False)
  File "/root/miniconda3/envs/lab/lib/python3.7/site-packages/pyglet/window/xlib/__init__.py", line 171, in __init__
    super(XlibWindow, self).__init__(*args, **kwargs)
  File "/root/miniconda3/envs/lab/lib/python3.7/site-packages/pyglet/window/__init__.py", line 590, in __init__
    display = pyglet.canvas.get_display()
  File "/root/miniconda3/envs/lab/lib/python3.7/site-packages/pyglet/canvas/__init__.py", line 94, in get_display
    return Display()
  File "/root/miniconda3/envs/lab/lib/python3.7/site-packages/pyglet/canvas/xlib.py", line 123, in __init__
    raise NoSuchDisplayException('Cannot connect to "%s"' % name)
pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to "None"

Суть в том, что в PyCharm все работает идеально

import os
import pyglet

# os.environ['DISPLAY'] = ''
display = pyglet.canvas.Display()
screen = display.get_default_screen()
screen_width = screen.width
screen_height = screen.height

print(screen_height, screen_width)

А если я раскомментирую код # os.environ['DISPLAY'] = '', я поймаю ошибку Cannot connect to "None" уже в пайчарме)

Если я попытаюсь запустить какую-то игру из библиотеки gym в Pycharm - она нормально заработает в окошечке. А тут вместо окошечка ошибка хоть убейся.

Фремворк SLM Lab запускаю используя anaconda окружении.

Пробовал все виды инструкций из документации: https://slm-lab.gitbook.io/slm-lab/setup/installation

Весь раздел помощь перепробовал вдоль и поперек


Ответы (1 шт):

Автор решения: Александр Кучеров

Есть две команды для получения админки в консоли:

  1. sudo su -
  2. sudo -i

И как выяснилось под первым типом администратора ничерта не работает и дает ошибку, а под вторым все работает идеально! Либо как вариант фреймворк SLM Lab нужно устанавливать без прав рута, но с этим возникали проблемы.

→ Ссылка