3. 环境搭建(下)

上一节我们把CARLA和SUMO的二进制文件都装好了。但说实话,那只是万里长征第一步。真正的坑,往往藏在Python环境里。我见过太多同学,明明软件装对了,一跑Python脚本就报错,然后心态炸裂。

为什么会这样?因为CARLA、SUMO各自有各自的Python依赖,版本还互相打架。你想想看,一个项目里同时用carla、traci、sumolib三个库,版本不对直接翻车。所以,虚拟环境不是选项,是必需品。

3.1 为什么必须用虚拟环境?

简单说,虚拟环境就像给你的项目开了一个独立的小房间。你在房间里装什么库,都不会影响到外面的系统Python。我个人习惯,每个仿真项目都新建一个虚拟环境,哪怕麻烦点,也比后面排查依赖冲突强。

我曾经在一个项目里,因为全局装了carla 0.9.11,又装了sumo 1.12,结果traci死活连不上。查了两天,最后发现是Python路径污染了。从那以后,我再也不敢偷懒了。

⚠️ 注意: 不要用系统自带的Python 2.x。CARLA和SUMO都要求Python 3.6以上,推荐Python 3.8或3.9。我用的就是Python 3.8.10,稳定得很。

3.2 创建并激活虚拟环境

操作很简单,打开终端,进到你的项目目录。比如我的项目叫 carla_sumo_demo:

# 创建虚拟环境,名字叫 venv_carla
python3 -m venv venv_carla

# 激活环境(Linux/Mac)
source venv_carla/bin/activate

# 激活环境(Windows)
venv_carla\Scripts\activate

激活成功后,终端前面会出现 (venv_carla) 字样。嗯,看到这个就对了。

💡 小技巧: 如果你用VS Code,可以直接在终端里激活,然后打开项目文件夹,VS Code会自动识别虚拟环境。省得每次手动激活。

3.3 安装依赖库:carla、traci、sumolib

依赖库分三块。咱们一个一个来,别急。

3.3.1 安装CARLA Python库

CARLA的Python库不在PyPI上,你得去CARLA的安装目录里找。我的是 /opt/carla/PythonAPI/carla/dist/ 目录下,有个 carla-0.9.11-cp38-cp38-linux_x86_64.whl 文件。注意,文件名里的 cp38 表示Python 3.8版本,别搞错了。

# 进入CARLA的PythonAPI目录
cd /opt/carla/PythonAPI/carla/dist/

# 安装对应版本的whl文件
pip install carla-0.9.11-cp38-cp38-linux_x86_64.whl

如果你用的是Windows,路径类似,在 C:\CARLA_0.9.11\PythonAPI\carla\dist\ 下找。安装完可以用 pip list | grep carla 验证一下。

3.3.2 安装SUMO Python库(traci + sumolib)

SUMO的Python库可以直接从PyPI装,省心很多。但要注意,traci和sumolib是两个独立的包,别只装一个。

# 安装traci和sumolib
pip install traci sumolib

装完之后,你可以用 pip list | grep -E "traci|sumolib" 看看版本。我目前用的是traci 1.18.0和sumolib 1.18.0,跟SUMO 1.18匹配。

🔑 关键点: traci和sumolib的版本必须跟你的SUMO主版本一致。比如SUMO 1.18,就用traci 1.18.x。版本不对,连不上仿真服务器。

3.3.3 安装其他辅助库

除了上面三个核心库,我建议再装几个常用的:

pip install numpy matplotlib shapely

numpy用来处理数据,matplotlib画图,shapely做几何计算。这些在后面的联合仿真中会频繁用到。

3.4 验证安装:写个测试脚本

光装完不行,得跑起来才算数。我写了一个简单的测试脚本,用来验证三个库是否都能正常导入。

# test_environment.py
import carla
import traci
import sumolib

print("✅ carla version:", carla.__version__)
print("✅ traci imported successfully")
print("✅ sumolib imported successfully")

# 测试carla客户端连接(需要先启动CARLA服务器)
try:
    client = carla.Client('localhost', 2000)
    client.set_timeout(2.0)
    world = client.get_world()
    print("✅ CARLA server connected")
except Exception as e:
    print("⚠️  CARLA server not running:", e)

# 测试sumolib读取路网文件(需要有一个.net.xml文件)
try:
    net = sumolib.net.readNet('path/to/your/map.net.xml')
    print("✅ SUMO network loaded")
except Exception as e:
    print("⚠️  SUMO network file not found:", e)

print("🎉 环境验证完成!")

运行这个脚本:

python test_environment.py

如果看到三个✅,恭喜你,环境搭好了。如果出现红色报错,别慌,看错误信息定位问题。最常见的是路径不对或者版本不匹配。

⚠️ 注意: 测试CARLA连接时,必须先启动CARLA服务器。启动命令:./CarlaUE4.sh(Linux)或 CarlaUE4.exe(Windows)。服务器没启动,客户端连不上是正常的。

3.5 运行官方Demo:感受联合仿真

环境验证通过后,咱们跑一个官方Demo试试。CARLA官方提供了一个 manual_control.py 脚本,在 PythonAPI/examples/ 目录下。这个脚本可以让你用键盘控制车辆。

# 启动CARLA服务器(新开一个终端)
cd /opt/carla
./CarlaUE4.sh

# 回到项目终端,运行manual_control.py
cd /opt/carla/PythonAPI/examples
python manual_control.py

如果一切正常,你会看到一个3D窗口,里面有一辆车。用WASD键控制它移动。嗯,看到车动了,说明CARLA的Python接口完全没问题。

对于SUMO,官方也提供了 sumo-gui 可视化工具。你可以用 sumo-gui 打开一个路网文件,看看交通流仿真效果。

sumo-gui /path/to/your/map.sumocfg

两个Demo都跑通了,说明你的环境搭建已经完成了90%。剩下的10%,就是后面章节要讲的联合仿真配置了。

3.6 本章知识体系

下面这张图,帮你理清本章的核心逻辑:

环境搭建(下)核心流程 1. 创建虚拟环境 python3 -m venv venv_carla 2. 安装依赖库 carla + traci + sumolib 3. 验证安装 运行测试脚本 4. 运行Demo manual_control.py + sumo-gui ✅ 环境搭建完成 准备进入联合仿真实战 注意:每一步都依赖上一步成功,不要跳步

3.7 常见问题与避坑

问题 原因 解决方法
ImportError: No module named carla whl文件没装对,或者Python版本不匹配 检查whl文件名中的cp38是否对应你的Python版本
traci连接超时 SUMO服务器没启动,或者端口被占用 先启动sumo-gui,再运行脚本
carla客户端连不上 CARLA服务器没启动,或者IP/端口不对 确认CarlaUE4.sh正在运行,检查端口2000
pip安装报错 网络问题或者权限不足 加 --user 参数,或者换国内镜像源
💡 我的经验: 如果你在Windows上遇到carla whl文件安装失败,试试用管理员身份运行命令提示符。我曾经因为这个卡了半小时,最后发现是权限问题。

好了,环境搭建到这里就全部完成了。你现在应该有一个干净的虚拟环境,里面装好了carla、traci、sumolib三个核心库,并且能成功运行官方Demo。后面的章节,我们会基于这个环境,开始真正的联合仿真实战。

可可精品资料库