NameError:未定义名称“ base” OpenAI Gym

时间:2018-11-25 23:11:27

标签: reinforcement-learning openai-gym

[请注意,我正在使用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

该如何解决?

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

在这里,ppo是最接近的策略优化算法,但是您可以运行所需的任何算法。

答案 2 :(得分:0)

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

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,也许这是问题所在。

答案 3 :(得分:0)

如下更改代码

import gym
env = gym.make("CartPole-v0")
obs = env.reset()
for i in range(1000):# it's changable
    env.step(env.action_space.sample())
    env.render()
env.close()

答案 4 :(得分:0)

您可以尝试将glfw更新为glfw 3.3 +