【问题标题】:NameError: name 'base' is not defined OpenAI GymNameError:名称“base”未定义 OpenAI Gym
【发布时间】:2019-04-27 14:46:42
【问题描述】:

[注意我使用的是xvfb-run -s "-screen 0 1400x900x24" jupyter notebook]

我尝试在 OpenAI Gym 中运行一组基本命令

import gym
env = gym.make("CartPole-v0")
obs = env.reset()
env.render()

但我收到以下错误:

...

~/Downloads/yes/lib/python3.7/site-packages/pyglet/gl/__init__.py in <module>()
    225     else:
    226         from .carbon import CarbonConfig as Config
--> 227 del base
    228 
    229 # XXX remove

NameError: name 'base' is not defined

我能做些什么来解决这个问题?

【问题讨论】:

  • 我也有同样的问题。你找到解决办法了吗?

标签: reinforcement-learning openai-gym


【解决方案1】:

解决您的问题需要获得系统依赖项和 python 依赖项的正确组合。将此代码粘贴到 Colab 中的一个单元格中并运行它以安装所有依赖项(注意使用的特定版本号)。

%%bash

# install required system dependencies
apt-get install -y xvfb x11-utils

# install required python dependencies (might need to install additional gym extras depending)
pip install gym[box2d]==0.17.* pyvirtualdisplay==0.2.* PyOpenGL==3.1.* PyOpenGL-accelerate==3.1.*

最后一步是运行以下代码块来正确初始化虚拟显示器。下面的代码在后台创建了一个虚拟显示器,您的 Gym Envs 可以连接到该显示器进行渲染。您可以随意调整虚拟缓冲区的大小,但在使用 Xvfb 时必须设置 visible=False

此代码只需在每个会话中运行一次即可开始显示。

import pyvirtualdisplay


_display = pyvirtualdisplay.Display(visible=False,  # use False with Xvfb
                                    size=(1400, 900))
_ = _display.start()

更多详情请查看以下blog post

【讨论】:

  • 运行你的命令后我得到了Successfully installed EasyProcess-0.3 PyOpenGL-accelerate-3.1.5 box2d-py-2.3.8 pyvirtualdisplay-0.2.5。但是仍然得到NameError: name 'base' is not defined
  • 您错过了博文的最后一部分。这些命令也需要在 Colab 中执行:import pyvirtualdisplay&lt;cr&gt; _display = pyvirtualdisplay.Display(visible=False, size=(1400, 900))&lt;cr&gt; _ = _display.start()&lt;cr&gt;
  • 在运行 pip 安装之前,我必须运行 apt-get install swig。但除此之外,这为我解决了它
【解决方案2】:

这对我有用。 (我也遇到了同样的问题)

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

你也可以试试,

conda install -c conda-forge pyglet
# pyglet==1.2.4?

在此之前,我用pip安装了gym,也许这就是问题所在。

【讨论】:

  • @Mikev emmm,可能问题出现在:pip install gym
【解决方案3】:

修改代码如下

import gym
print(gym.__version__)# for me: 0.15.4
env = gym.make("CartPole-v0")
obs = env.reset()
for i in range(1000):# it's changable
    env.step(env.action_space.sample())
    env.render()# won't work in Google Colab
env.close()

【讨论】:

  • 可能来自您的系统,请检查您的健身房版本。请注意,渲染功能在 colab 上不起作用,您需要 IPython 笔记本技巧来显示它 - 或从渲染中保存视频
【解决方案4】:

你可以尝试将 glfw 更新到 glfw 3.3+

【讨论】:

  • 为什么?那有什么作用?
【解决方案5】:

这可能对你有用:

使用以下命令卸载软件包:

pip uninstall pyglet
pip uninstall gym

然后使用以下命令安装软件包:

conda install -c conda-forge pyglet
conda install -c conda-forge gym

【讨论】:

    【解决方案6】:

    您可以从命令行运行算法:

    python -m spinup.run ppo --exp_name CartPole --env CartPole-v0
    

    这里,ppo 是最近的策略优化算法,但您可以运行任何您想要的算法。

    【讨论】:

      猜你喜欢
      • 2017-10-24
      • 1970-01-01
      • 2018-04-04
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      相关资源
      最近更新 更多