Python openAi健身房名称错误

Python openAi健身房名称错误,python,python-3.x,nameerror,windows-subsystem-for-linux,openai-gym,Python,Python 3.x,Nameerror,Windows Subsystem For Linux,Openai Gym,我试图在WSL上使用OpenAI中著名的“Gym”模块,并在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) ac

我试图在WSL上使用OpenAI中著名的“Gym”模块,并在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
回溯(最近一次呼叫最后一次):
文件“”,第4行,在
文件“/home/DrHofstadter/gym/gym/core.py”,第153行,在渲染中
返回self.\u渲染(模式=模式,关闭=关闭)
文件“/home/DrHofstadter/gym/gym/core.py”,第285行,在渲染中
返回self.env.render(模式,关闭)
文件“/home/DrHofstadter/gym/gym/core.py”,第153行,在渲染中
返回self.\u渲染(模式=模式,关闭=关闭)
文件“/home/DrHofstadter/gym/gym/envs/classic_control/cartpole.py”,第114行,在渲染中
从gym.envs.classic_控件导入渲染
文件“/home/DrHofstadter/gym/gym/envs/classic_control/rendering.py”,第23行,在
从pyglet.gl导入*
文件“/home/DrHofstadter/.local/lib/python3.5/site packages/pyglet/gl/_init__.py”,第224行,在
德尔基
NameError:未定义名称“base”
问题类似于
什么也没有呈现。(问题中给出的gitterforum链接不再有效。)

这可能不是这个问题的完美答案,但这是我解决这个问题的经验

当我从spyder运行我的程序时,我遇到了同样的错误。但是当我从终端执行相同的代码时,它没有抛出任何错误。 但请确保您的区域设置针对健身房环境进行了正确配置。

请重试

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


请给我们看pyglet和gym版本,我们可以比较它们。您可以删除所有健身房,并在重新安装后使用
pip安装'gym[all]'
。此外,如果您使用Colab或Jupyter,您可以添加如下显示(我认为您使用的是笔记本电脑) 您可以为支持虚拟显示添加一些支持,如xvfbopengl
如果您使用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

您是否在远程服务器上运行?
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