[请注意,我正在使用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
该如何解决?
答案 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 +