我正在通过木星(Ubuntu14.04)在p2.x大型AWS服务器上运行python2.7脚本。我希望能够进行我的模拟。
最小工作实例
import gym
env = gym.make('CartPole-v0')
env.reset()
env.render()
env.render()
(除其他外)犯了以下错误:
...
HINT: make sure you have OpenGL install. On Ubuntu, you can run
'apt-get install python-opengl'. If you're running on a server,
you may need a virtual frame buffer; something like this should work:
'xvfb-run -s \"-screen 0 1400x900x24\" python <your_script.py>'")
...
NoSuchDisplayException: Cannot connect to "None"
我想让一些人能够看到模拟。这将是理想的,如果我可以得到它的内联,但任何显示方法将是很好的。
编辑:这只是一些环境的问题,比如经典的控件。
更新I
在这的启发下,我尝试了以下方法,而不是xvfb-run -s \"-screen 0 1400x900x24\" python <your_script.py>
(我无法工作)。
xvfb-run -a jupyter notebook
运行我现在得到的原始脚本
GLXInfoException: pyglet requires an X server with GLX
更新II
#154问题似乎是相关的。我试图禁用弹出,并直接创建RGB颜色。
import gym
env = gym.make('CartPole-v0')
env.reset()
img = env.render(mode='rgb_array', close=True)
print(type(img)) # <--- <type 'NoneType'>
img = env.render(mode='rgb_array', close=False) # <--- ERROR
print(type(img))
我得到了ImportError: cannot import name gl_info
。
更新III
在@扭动的启发下,我尝试创建一个视频文件,然后呈现它(一个完全令人满意的解决方案)。
使用“记录和上载结果”中的代码
import gym
env = gym.make('CartPole-v0')
env.monitor.start('/tmp/cartpole-experiment-1', force=True)
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
env.monitor.close()
我试着遵循您的建议,但是在运行ImportError: cannot import name gl_info
时得到了env.monitor.start(...
。
根据我的理解,问题在于OpenAI使用pyglet
,pyglet
“需要”一个屏幕来计算要呈现的图像的RGB颜色。因此,有必要欺骗python,使其认为存在连接的监视器。
更新IV
FYI有在线使用大黄蜂的解决方案,似乎是有效的。如果您能够控制服务器,这应该是可行的,但是由于AWS在VM中运行,所以我认为您不能使用它。
更新V
如果您有这个问题,并且不知道该做什么(就像我一样),那么大多数环境的状态都非常简单,您可以创建自己的呈现机制。不太满意,但是..。你知道。
https://stackoverflow.com/questions/40195740
复制相似问题