openAi-gym NameError

Я пытаюсь использовать знаменитый модуль «Тренажерный зал» из OpenAI на WSL и выполняю код на python 3.5.2.
Когда я пытаюсь запустить среду , как описано здесь, используя код:

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

Это случилось:

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

Проблема похожа на этот вопрос, ничего не отображается. (Ссылка на gitterforum, о которой идет речь, больше не работает.)


person Suprabhat    schedule 24.05.2017    source источник
comment
Вы работаете на удаленном сервере?   -  person Benedict K.    schedule 21.06.2018


Ответы (3)


Возможно, это не идеальный ответ на этот вопрос, но это мой опыт, как я решил эту проблему.

Я получал ту же ошибку, когда запускал свою программу из Spyder. но когда я выполняю тот же код с терминала, он не вызывает никаких ошибок. но сделайте так, чтобы ваш регион был правильно настроен для тренажерного зала.

person ujjal das    schedule 28.03.2020

Пожалуйста, попробуй

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

Or,

pip install pyglet
person Andrei R.    schedule 01.10.2020

Пожалуйста, покажите нам версии пиглета и спортзала, и мы сможем их сравнить. Вы можете удалить весь тренажерный зал и после переустановки с помощью pip install 'gym[all]'. Кроме того, если вы работаете с Colab или Jupyter, вы можете добавить дисплей, как показано ниже (я думаю, вы работаете с ноутбуком), вы можете добавить некоторые поддержки, такие как xvfb и opengl для поддерживает виртуальный дисплей.
Если вы используете Linux, в основном устанавливайте с

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

после этого вы должны изменить свой код, как показано ниже.

Библиотеки

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

Запущен виртуальный дисплей

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

Теперь закончить ход

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
person metehan akdag    schedule 04.02.2021