GYM 0.21.0安装踩坑(修改源码)

gym现在已经不再维护了,转而使用gymnasium。但是现在大部分项目依然使用gym的接口,gym的接口没有向后兼容性。

安装环境为Ubuntu20.04,python3.6至3.9的anaconda虚拟环境

直接安装gym是不会报错的,但是默认安装0.26.2

安装0.21.0几乎是必然出现:error in gym setup command: 'extras_require' must be a dictionary whose values are strings or lists of strings containing valid project/version requirement specifiers.

也就是说gym的extras_require变量的写法不符合规范。

大部分博客甚至github上的issue([Bug Report] Version 0.21 could not be installed. · Issue #3176 · openai/gym · GitHub)都建议回退setuptools的版本至65.5.0或63.2.0或57.0.0诸如此类,将wheel回退至0.38.0。这种做法或许对部分情况是有效的,但对我来说无效,浪费了我大量时间。这里给出一个简单高效的方法:

首先使用

git clone https://github.com/openai/gym.git
cd gym
git checkout v0.21.0

下载到当前目录并切换tag为0.21.0

随后,回退pip,setuptools,wheel的版本,以防万一

python3.8 -m pip install pip==21
python3.8 -m pip install wheel==0.38.0
conda install setuptools==65.5.0

这里不要使用pip的--user选项给setuptools安装权限,--user不会安装虚拟环境里,只能使用conda安装,因此记得使用conda config添加一下中科大的镜像源来下载setuptools

最后打开gym文档中的setup.py,找到以下内容:

extras = {
    "atari": ["ale-py~=0.7.1"],
    "accept-rom-license": ["autorom[accept-rom-license]~=0.4.2"],
    "box2d": ["box2d-py==2.3.5", "pyglet>=1.4.0"],
    "classic_control": ["pyglet>=1.4.0"],
    "mujoco": ["mujoco_py>=1.50, <2.0"],
    "robotics": ["mujoco_py>=1.50, <2.0"],
    "toy_text": ["scipy>=1.4.1"],
    "other": ["lz4>=3.1.0", "opencv-python>=3.0"],
}

注意最后一行的"other": ["lz4>=3.1.0", "opencv-python>=3.0"],这里源代码是"opencv-python>=3.",问题就出现在这个0上,这么一看是不是显得特别XX(当时是真的想骂人,浪费时间),修改完成后在当前的虚拟环境中(一定要激活你需要安装的那个虚拟环境)使用

pip install -e .

即可正常完成安装,下面给一个简单的例程用于验证:

import gym

def main():
    env = gym.make("CartPole-v1")
    obs = env.reset()
    print("初始观测:", obs)

    total_reward = 0.0
    done = False
    step = 0

    while not done and step < 1000:
        action = env.action_space.sample()
        obs, reward, done, info = env.step(action)
        print(f"Step {step:03d} — 动作: {action}, 观测: {obs}, 奖励: {reward}, 完成: {done}")
        total_reward += reward
        step += 1
    print(f"回合结束,总步数={step}, 累计奖励={total_reward}")
    env.close()
if __name__ == "__main__":
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值