第二章:环境搭建与工具链——Python与Anaconda环境配置、Gymnasium库安装、PyTorch/TensorFlow选择、版本兼容性避坑

说实话,做策略训练与仿真迁移,第一步往往最劝退。不是算法难,是环境搭不起来。我见过太多人卡在「import gymnasium报错」这一步,一卡就是半天。嗯,这一章咱们就把这事彻底搞定。

2.1 Python与Anaconda:你的实验台

我个人习惯用Anaconda来管理Python环境。为什么?因为策略训练项目往往需要多个Python版本,比如有的库只支持3.8,有的必须3.10。用Anaconda,你可以随时创建、切换、删除环境,互不干扰。

安装步骤其实很简单:

  1. 去Anaconda官网下载对应系统的安装包(Windows/macOS/Linux)
  2. 一路默认安装,但记得勾选「Add Anaconda to my PATH environment variable」
  3. 打开终端或Anaconda Prompt,输入 conda --version 验证
小技巧: 我建议你创建一个专门用于策略训练的环境,比如叫 rl_env。命令是:conda create -n rl_env python=3.9。这样就算搞坏了,删掉重来也不影响系统Python。

2.2 Gymnasium库安装:强化学习的游乐场

Gymnasium是 Gym的继承者,目前最主流的强化学习环境库。说白了,它提供了一堆现成的游戏环境,比如CartPole、MountainCar、Atari游戏等,让你可以直接在上面训练智能体。

安装命令:

pip install gymnasium
pip install gymnasium[classic-control]  # 经典控制环境
pip install gymnasium[atari]            # Atari游戏环境
pip install gymnasium[box2d]            # Box2D物理环境

我在项目中遇到过一个问题:直接 pip install gymnasium 后,运行CartPole环境报错,说缺少依赖。后来发现是没装 classic-control 这个扩展包。所以建议你一次性装全。

注意: Gymnasium和旧版Gym不兼容。如果你之前用过Gym,记得卸载干净:pip uninstall gym,再装Gymnasium。否则会出现「module 'gym' has no attribute 'make'」这种诡异错误。

2.3 PyTorch vs TensorFlow:我选哪个?

这个问题几乎每个学员都会问。我的回答是:做策略训练,优先选PyTorch。

为什么?

  • 调试方便: PyTorch是动态图,你可以随时print张量的值,像写普通Python一样。TensorFlow 2.x虽然也支持动态图,但总感觉隔了一层。
  • 社区生态: 目前强化学习领域的主流框架,比如Stable-Baselines3、RLlib、CleanRL,底层都是PyTorch。你用TensorFlow反而会找不到现成的实现。
  • 我自己的经历: 有一次我需要在自定义环境中实现一个策略网络,用TensorFlow写了一天没跑通,换成PyTorch两小时搞定。嗯,从此我就成了PyTorch党。

当然,如果你公司强制用TensorFlow,或者你要部署到TensorFlow Serving上,那也没问题。只是学习成本会高一些。

安装命令对比:

框架 CPU版本 GPU版本(CUDA 11.8)
PyTorch pip install torch torchvision torchaudio pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
TensorFlow pip install tensorflow pip install tensorflow[and-cuda]
核心建议: 如果你是新手,直接装PyTorch CPU版本就够了。策略训练初期用CPU完全跑得动,等后面需要大规模训练时再配GPU环境。

2.4 版本兼容性避坑指南

我曾经因为版本问题,浪费了整整一个周末。当时装的是PyTorch 2.0 + Gymnasium 0.28 + Stable-Baselines3 1.7,结果训练时一直报「AttributeError: 'Env' object has no attribute 'unwrapped'」。后来发现是Stable-Baselines3对Gymnasium的版本有要求。

这里给你一张我实测过的兼容性表:

组件 推荐版本 注意事项
Python 3.8 - 3.10 3.11以上部分库不兼容
Gymnasium 0.28.1 或 0.29.0 不要装0.26以下版本
PyTorch 2.0.1 或 2.1.0 CUDA版本要和驱动匹配
Stable-Baselines3 2.0.0 或 2.1.0 必须和Gymnasium版本对应
TensorFlow 2.12.0 或 2.13.0 2.15以上改动较大
避坑指南: 我曾经遇到过最坑的事——装完所有库后,发现CUDA版本和PyTorch不匹配。你想想看,训练了3个小时才发现用的是CPU,那感觉...所以建议你先用 torch.cuda.is_available() 检查一下GPU是否可用。

2.5 知识体系总览

下面这张图帮你理清整个环境搭建的逻辑。说白了,就是三层结构:底层是Python和Anaconda,中间是深度学习框架,上层是强化学习环境库。

策略训练环境搭建知识体系 基础层:Python + Anaconda Python 3.8-3.10 | conda环境管理 | 虚拟环境隔离 框架层:PyTorch / TensorFlow 推荐PyTorch | CUDA版本匹配 | GPU加速 环境层:Gymnasium 经典控制 | Atari | Box2D | 自定义环境 避 坑 指 南 版本 兼容 CUDA 匹配 依赖 冲突

2.6 快速验证脚本

环境搭好后,跑下面这段代码,能一次性验证所有组件是否正常工作:

import gymnasium as gym
import torch
import sys

print(f"Python版本: {sys.version}")
print(f"PyTorch版本: {torch.__version__}")
print(f"CUDA可用: {torch.cuda.is_available()}")

# 创建环境
env = gym.make("CartPole-v1")
obs, info = env.reset()
print(f"环境: CartPole-v1")
print(f"观测空间: {env.observation_space}")
print(f"动作空间: {env.action_space}")

# 随机走一步
action = env.action_space.sample()
obs, reward, terminated, truncated, info = env.step(action)
print(f"随机动作: {action}, 奖励: {reward}")

env.close()
print("✅ 环境搭建成功!")

如果这段代码能顺利跑完,恭喜你,环境搭建这一步你已经过关了。接下来就可以正式开始策略训练了。

最后说一句: 环境搭建这事,一次配好,后面省心。我建议你把安装命令和版本号记下来,下次换电脑或者重装系统时直接复制粘贴就行。别问我为什么知道——我已经重装了5次了。