openAi-gym 名称错误

Posted

技术标签:

【中文标题】openAi-gym 名称错误【英文标题】:openAi-gym NameError 【发布时间】:2017-10-24 07:43:09 【问题描述】:

我正在尝试在 WSL 上使用来自 OpenAI 的著名“Gym”模块并在 python 3.5.2 上执行代码。 当我尝试运行环境as explained here时,使用代码:

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

问题类似于this question 什么都没有被渲染。 (有问题的 gitterforum 链接不再起作用。)

【问题讨论】:

你在远程服务器上运行吗? 【参考方案1】:

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

当我从 spyder 运行我的程序时,我遇到了同样的错误。但是当我从终端执行相同的代码时,它没有抛出任何错误。 但要为健身房环境正确配置您的语言环境。

【讨论】:

【参考方案2】:

请尝试

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

或者,

pip install pyglet

【讨论】:

【参考方案3】:

请向我们展示 pyglet 和 gym 版本,我们可以比较它们。您可以删除所有健身房并在重新安装后使用pip install '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

【讨论】:

以上是关于openAi-gym 名称错误的主要内容,如果未能解决你的问题,请参考以下文章

错误:指定的资源名称包含无效字符。错误代码:无效资源名称

错误“名称空间'System.Web'中不存在类型或名称空间名称'Script'”背后是不是有解释

错误:名称后跟 '::' 必须是类或命名空间名称

Django“名称错误:未定义名称‘专辑’”

名称错误:未定义全局名称“BaseFunction”

错误 CS0234 名称空间“MvvmCross”中不存在类型或名称空间名称“Platforms”(您是不是缺少程序集引用?)