macOS系统运行强化学习Lunar Lander时出现Box2D属性错误
解决macOS上Lunar Lander强化学习程序的AttributeError问题
我之前帮不少开发者解决过macOS上运行OpenAI Gym Lunar Lander时的Box2D相关报错,你遇到的AttributeError: module '_Box2D' has no attribute 'RAND_LIMIT_swigconstant'本质是Box2D版本不兼容或者安装方式不对导致的,尤其是M系列芯片的Mac更容易碰到这个问题,下面是具体的修复步骤:
第一步:卸载冲突的Box2D相关包
首先把当前可能存在冲突的Box2D包全部卸载,避免版本混乱:
pip uninstall -y box2d box2d-kengz gym-box2D
第二步:根据你的Mac芯片选择对应安装方式
如果你用的是M系列(Apple Silicon)芯片
M系列是arm架构,直接pip安装可能会有编译适配问题,推荐两种方式:
- 方式一:用conda安装(推荐)
如果你已经装了conda,直接运行:conda install -c conda-forge box2d-py - 方式二:指定兼容的pip版本
不想用conda的话,可以安装经过适配的旧版本:pip install box2d-py==2.3.8
如果你用的是Intel芯片
直接用pip安装官方适配版本即可:
pip install box2d-py==2.3.10
第三步:验证安装是否成功
打开Python终端,输入以下代码测试:
import box2d from box2d import _Box2D print(_Box2D.RAND_LIMIT_swigconstant)
如果能正常输出一个数值(比如32767.0),说明Box2D已经正确安装,不会再出现之前的属性错误。
额外注意事项
- 确保你的Gym版本兼容:推荐使用
gym==0.21.0,因为新版本的Gym已经把Box2D类环境迁移到了gymnasium库,如果你用的是新版Gym,需要安装gymnasium[box2d]替代。 - 如果你用的是
keras-rl库,建议搭配keras-rl==0.4.2版本,和上述包的兼容性更好。
你提供的相关代码片段:
import numpy as np import gym import csv from keras.models import Sequential from keras.layers import Dense, Activation, Flatten from keras.optimizers import Adam from rl.agents.dqn import DQNAgent from rl.policy import BoltzmannQPolicy, EpsGreedyQPolicy from rl.memory import SequentialMemory import io import sys import csv # Path e...
内容的提问来源于stack exchange,提问作者HungryBird
相关产品推荐
相关产品推荐

