OpenAI Gym CartPole问题:numpy 2.1.1无bool8属性报错求助
解决CartPole代码中
numpy.bool8不存在的问题 问题原因
numpy 2.x版本移除了bool8别名,而你使用的Gym 0.26.2版本内部代码仍在调用numpy.bool8,导致兼容性报错——你的代码本身没有问题,是依赖库版本不匹配引发的。
解决方法
方法一:手动修改Gym内部代码(无需更换依赖)
打开终端执行以下命令,找到Gym的安装目录:
pip show gym复制输出里的
Location路径(比如C:\PythonXX\Lib\site-packages\gym)进入该目录,用编辑器的全局搜索功能查找所有包含
np.bool8或numpy.bool8的文件将所有找到的
np.bool8替换为np.bool_,numpy.bool8替换为numpy.bool_,保存修改后重新运行代码即可。
方法二:切换到Gymnasium(推荐,长期兼容)
Gym官方已迁移到Gymnasium项目,新版本完全支持numpy 2.x,步骤如下:
- 卸载旧版Gym:
pip uninstall gym -y - 安装Gymnasium:
pip install gymnasium - 修改代码适配Gymnasium:
import gymnasium as gym # 创建环境并指定渲染模式 env = gym.make('CartPole-v1', render_mode="human") # reset返回(state, info),取第一个值 state, _ = env.reset() # 运行1000步 for _ in range(1000): env.render() action = env.action_space.sample() # Gymnasium的step返回5个值:state, reward, terminated, truncated, info state, reward, terminated, truncated, info = env.step(action) # 终止或截断时重置环境 if terminated or truncated: state, _ = env.reset() env.close()
内容的提问来源于stack exchange,提问作者Jitender
相关产品推荐
相关产品推荐

