强化学习环境安装——openAI gym
前言
在强化学习领域,OpenAI Gym 是一款极具影响力且被广泛应用的工具包。它OpenAI推出的强化学习实验环境库,为研究人员和开发者提供了一个标准化的平台,能够轻松创建、测试和比较各种强化学习算法。可以说它是用Python语言实现了离散之间智能体-环境中的环境部分。
Gym库的官网链接:https://gym.openai.com/ 。目前 Gym 也有活跃分支 Gymnasium(https://www.gymnasium.farm/ ),对原 Gym 进行了改进和扩展。
安装环境
安装环境在虚拟环境下最好,我之前在安装PyTorch的时候已经安装过虚拟环境了,如果想顺便安装PyTorch或者虚拟环境conda的可以看这里。
我的安装环境是conda 里的虚拟环境。
-windows11
-python3.9
gym可以通过pip安装或者conda 安装,所以安装之前可以尝试先更新一下安装器的版本。(当然这步是不必要的)
# pip版本更新
pip --version
python -m pip install --upgrade pip
pip --version# conda版本更新
conda --version
conda update conda # 更新conda本身
# 或者你也可以更新所有的包,当然需要先激活虚拟环境
# conda update --all
conda --version
gym安装
gym实际上有许多的包组成,所以它可以分为最小安装和完全安装。
最小安装
直接安装gym,后面什么都不加,就是最小安装。这种安装方式只安装了gym环境最基本的一些包,好像有100多个。
# 通过pip安装
pip install gym
# 通过conda 安装
conda install gym
指定安装
如果想要安装gym里所有的包,直接在gym后面加个方括号,加上all就行。
# 通过pip安装
pip install gym[all]
# 通过conda 安装
conda install gym[all]
当然这个方括号里也可以指定特殊的包,比如经常用的box2d。
# 通过pip安装
pip install gym[box2d]
# 通过conda 安装
conda install gym[box2d]
当然这个box2d很有可能安装不了,或者你是在使用all的时候卡在box2d这块,导致整个安装失败。
这个可能是安装gym[box2d]时box2d - py轮子构建失败,swig.exe命令执行出错,我们后面再说。
gym库介绍
OpenAI Gym 提供了一系列强化学习环境库,分为 核心库 和 扩展库。
1. 核心库(必备)
库名 | 作用 | 安装命令 | 常用环境示例 |
---|---|---|---|
gym | 基础环境(经典控制、简单算法) | pip install gym | CartPole-v1 , MountainCar-v0 |
gym-notices | 版本更新通知 | 自动随 gym 安装 | - |
2. 常用扩展库(按领域分类)
(1)经典控制 & 物理仿真
库名 | 环境类型 | 安装命令 | 示例环境 |
---|---|---|---|
gym[classic_control] | 经典控制问题 | pip install gym[classic_control] | Pendulum-v1 , Acrobot-v1 |
gym[box2d] | 2D 物理引擎(如车辆、机器人) | pip install gym[box2d] | LunarLander-v2 , CarRacing-v2 |
(2)Atari 游戏
库名 | 说明 | 安装命令 | 示例游戏 |
---|---|---|---|
gym[atari] | 2600 款 Atari 游戏 | pip install gym[atari] | Pong-v4 , Breakout-v4 |
ale-py | 新版 Atari 模拟器(必装) | pip install ale-py | - |
(3)机器人控制
库名 | 说明 | 安装方式 | 示例环境 |
---|---|---|---|
gym[robotics] | Mujoco 机器人仿真 | pip install gym[robotics] | FetchReach-v2 |
mujoco-py | Mujoco 引擎绑定 | 需单独安装(许可证限制) | - |
(4)其他扩展
库名 | 用途 | 安装命令 | 备注 |
---|---|---|---|
gym[toy_text] | 文本型简单环境 | pip install gym[toy_text] | FrozenLake-v1 |
gym[all] | 一次性安装所有官方扩展 | pip install gym[all] | 不推荐(可能报错或冲突) |
3. 第三方扩展库(非官方但常用)
库名 | 用途 | 安装命令 | 示例 |
---|---|---|---|
gymnasium | Gym 官方分支(维护更活跃) | pip install gymnasium | 兼容 Gym,修复了部分 Bug |
procgen | 程序化生成环境 | pip install procgen | CoinRun-v0 |
pybullet | 3D 物理仿真 | pip install pybullet | AntBulletEnv-v0 |
4. 版本注意
- Gym 0.26+:部分 API 变更(如
env.step()
返回 5 个值)。 - Gymnasium:建议新项目使用(
pip install gymnasium
),它是 Gym 的官方继承者,维护更活跃。如果是老项目,可以import gym → import gymnasium as gym
,不过 gymnasium 所有的库都需要重新安装,要确保用到的库都安装了。
安装问题
刚刚提到了安装 gym[box2d]
时出现错误的问题。它很有可能是因为 缺少 Box2D 的编译依赖(特别是 swig
和 C++ 编译工具链)。
根本原因 : Box2D 是一个 C++ 物理引擎,Python 的 box2d-py
包需要通过 swig
工具生成绑定代码。如果你和我一样,那么你的错误日志里会显示 swig.exe
未找到,说明系统缺少必要的编译环境。
** 解决方案**
- 推荐方案(无需编译)
直接安装预编译的 Box2D 包:
conda install -c conda-forge gym-box2d
这会自动处理所有依赖(包括 box2d-py
的二进制版本)。
- 正规方案
-
步骤 1:安装 SWIG(必须)在 Conda 环境中运行:
conda install -c conda-forge swig
或手动安装:下载 SWIG Windows 版,将swig.exe
所在目录加入系统PATH
。 -
步骤 2:安装 Visual Studio 编译工具: 确保已安装 Visual Studio 2022 并勾选以下组件:
“使用 C++ 的桌面开发” - “Windows 10/11 SDK”
或通过命令行安装(管理员权限):
winget install Microsoft.VisualStudio.2022.BuildTools --override "--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended"
-
步骤 3:清理并重新安装
pip uninstall box2d-py gym # 清理旧版本
conda install -c conda-forge swig # 确保 SWIG 已安装
pip install gym[box2d] --no-cache-dir # 强制重新编译
-
验证安装
运行以下代码测试:
import gym
env = gym.make("LunarLander-v2") # 使用 Box2D 环境
print("环境创建成功!")
env.close()