NameError:名称“glPushMatrix”未定义

Jac*_* Su 19 python opengl render

尝试运行稳定基线健身房的测试代码

import gym

from stable_baselines3 import A2C

env = gym.make("CartPole-v1")

model = A2C("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=10_000)

obs = env.reset()
for i in range(100):
    action, _state = model.predict(obs, deterministic=True)
    obs, reward, done, info = env.step(action)
    env.render()
    if done:
      obs = env.reset()
Run Code Online (Sandbox Code Playgroud)

发现错误“NameError:名称'glPushMatrix'未定义”

Traceback (most recent call last):
  File "test_cart_pole.py", line 14, in <module>
    env.render()
  File "/Users/xxx/opt/anaconda3/lib/python3.8/site-packages/gym/core.py", line 295, in render
    return self.env.render(mode, **kwargs)
  File "/Users/xxx/opt/anaconda3/lib/python3.8/site-packages/gym/envs/classic_control/cartpole.py", line 229, in render
    return self.viewer.render(return_rgb_array=mode == "rgb_array")
  File "/Users/xxx/opt/anaconda3/lib/python3.8/site-packages/gym/envs/classic_control/rendering.py", line 126, in render
    self.transform.enable()
  File "/Users/xxx/opt/anaconda3/lib/python3.8/site-packages/gym/envs/classic_control/rendering.py", line 232, in enable
    glPushMatrix()
NameError: name 'glPushMatrix' is not defined
Run Code Online (Sandbox Code Playgroud)

我尝试了“pip install PyOpenGL PyOpenGL_accelerate”,这也没有帮助卸载 pyglet 并再次安装,也没有任何想法???

小智 42

刚刚遇到了同样的问题。通过安装旧版本的 pyglet 修复它:

$ pip install pyglet==1.5.27
Run Code Online (Sandbox Code Playgroud)

我不知道这是否是避免该问题的最新版本,但它有效。

  • 这就是这个问题的答案。✅ (2认同)