第一次在Windows下装CARLA 0.9.15那天我下载和解压就耗掉大半个下午最后双击CarlaUE4.exe屏幕黑了一秒闪退。当时整个人是懵的官方文档来回翻最后发现三个问题全叠在一起显卡驱动停留在两年前、Python装的是3.11、安装路径还放在中文用户名目录下。今天这篇作为这个系列的第一篇我不想把官方文档重新抄一遍而是把CARLA 0.9.15在Windows下的完整安装过程——从选版本、下载、解压、配Python API再到服务端跑起来——按真实操作顺序写清楚最后附上我自己排查过的启动问题链路。目标很直接让你照着操作少熬夜。1. 先搞清楚CARLA的工作方式再动手装1.1 服务端和客户端分离是理解所有安装问题的钥匙CARLA是一个开源的自动驾驶仿真平台底层基于虚幻引擎UE4。你在安装时看到的CarlaUE4.exe本质上是整个虚拟世界的服务端负责场景渲染、车辆动力学、传感器数据模拟而你用Python写的几十行脚本是另一个独立的客户端通过RPC连接服务端发指令控制车辆、相机、雷达。这个架构决定了你后续排查问题的基本思路画面崩了去找显卡、驱动、运行库的问题连不上服务端去找端口、防火墙、版本匹配的问题Python API导入失败去找Python版本和wheel包的问题。很多新手一看到“安装失败”就在各种论坛乱翻主要原因就是把服务端和客户端混在一起。我后来排查速度明显变快靠的就是这套二分法。安装过程拆开看其实就是两件事让CarlaUE4.exe这个服务端进程正常跑起来再把Python客户端环境配好。1.2 为什么选0.9.15而不是无脑追最新版CARLA的版本更新节奏相当快API变动也大。0.9.15这个版本正好处在一个“资料多、兼容性好、社区使用率高”的区间——网上大量开源项目、课程代码、论文复现都是基于0.9.14或0.9.15写的。你如果直接装了一个很新的版本后面跑别人的项目时很可能遇到API不兼容反而劝退。另外从Windows安装的角度看0.9.15的Python API明确匹配Python 3.8安装方式已经很固定踩坑案例也多。加上很多自动驾驶方向的同学主力机就是Windows笔记本0.9.15作为第一套环境比追新版本更稳妥。1.3 Windows不是官方主推平台但预编译包确实省心CARLA官方文档更推荐Ubuntu这不代表Windows不能玩。0.9.15的发布页面直接提供了Windows预编译包不需要你自己编译UE4源码。反而有人一上来就照着“源码编译”的教程折腾在Windows下需要Visual Studio、CMake、完整UE4源码环境配置比写算法还耗时绝大多数人扛不住。所以本篇只讲预编译包方案。至于“CARLA只能在Linux跑”的说法多半是那些教程默认环境是Linux并不代表Windows用户必须绕开。2. 装之前先给自己机器做个体检2.1 显卡是最大的门槛别让集成显卡硬扛CARLA服务端靠UE4渲染虚拟城市显卡直接决定你能不能跑、跑得流畅不流畅。我在实测中的底线和推荐如下4GB显存独立显卡起步线能跑建议配低画质模式6GB显存独立显卡中等规模场景基本舒服8GB及以上显存推荐配置加载大城镇和雷达点云数据会顺畅很多。如果你用笔记本还要注意双显卡切换的问题。很多轻薄本明明有独立显卡但UE4默认把它分配给了核显结果是启动后极度卡顿甚至直接无响应。遇到这种情况去NVIDIA控制面板手动指定CarlaUE4.exe使用独立显卡运行或者启动时加上-prefernvidia参数。2.2 内存、磁盘与CPU别在奇怪的地方卡住CARLA 0.9.15解压后的占用空间在50GB以上如果再算上着色器缓存和后续生成的日志、回放文件我建议磁盘至少留80到100GB空闲。内存建议16GB起步8GB能开但加载大城镇时非常容易把内存吃满然后崩掉。CPU要求不算苛刻四核以上即可但固态硬盘建议必须有否则加载地图的速度差距是体感级别的。2.3 系统版本、Python版本与驱动三件事一起检查系统Windows 10或11的64位版本尽量保持系统更新Python0.9.15的客户端wheel包明确指向cp38也就是Python 3.8这一点后面单独讲显卡驱动最好升级到当前显卡支持的最新稳定版。驱动过老时最常见的表现是双击CarlaUE4.exe后没反应或闪退你排查半天也找不到别的原因。2.4 路径必须避开中文和特殊符号这个我必须放在安装前说因为踩的人太多。UE4对于非ASCII路径的支持一直不好如果目录或者Windows用户名里带中文即便程序能启动后面也可能出现各种莫名其妙的资源加载失败。建议把CARLA解压到一个纯英文路径例如D:\CARLA\carla-0.9.15。如果操作系统用户名就是中文更不要把CARLA放在C:\Users\张三\这种目录下面。3. 下载和解压其实隐藏着不少坑3.1 下载前先确认到底下载哪个包CARLA 0.9.15在发布页面通常会有几个入口源码包、Docker镜像、预编译包。你只需要关注预编译包。不要在源码包上浪费时间Windows源码编译涉及的东西太多了。预编译包体积很大下载时间会比较长建议用支持断点续传的下载工具否则中途断一次又从头再来很崩溃。如果你的网络环境不够稳定尽量挑网络空闲时段下载。3.2 分卷压缩包最容易栽跟头0.9.15的Windows预编译包往往不是单个文件而是拆成了多个分卷压缩包。常见的是.zip分卷也可能是.tar.gz分卷。无论哪种形式切记把所有分卷全部下载完整漏掉其中任何一个解压到一半就会报错。Windows自带的压缩工具对超大分卷的支持一般建议装7-Zip。右键第一个分卷选择“提取到当前文件夹”7-Zip会自动按顺序处理后续分卷。解压过程可能持续十几分钟甚至更久中间界面看着像卡住其实没坏别中途给关了。3.3 解压后如何自查文件完整解压完成后进入CARLA根目录正常情况下会看到这些关键内容WindowsNoEditor目录里面是核心服务端程序CarlaUE4.exePythonAPI目录包含Python示例和客户端库资源地图相关目录以及用于本地安装的wheel文件。自查方式很简单确认CarlaUE4.exe存在确认PythonAPI目录存在再看解压后总大小和官方标注的包体积是否接近。如果解压过程中断过哪怕只有部分资源缺失启动时的报错也会很随机排查起来比安装失败还要痛苦。4. 配置Python客户端API只装一个包还不够4.1 Python 3.8是硬性匹配不是建议CARLA 0.9.15给的Windows wheel文件通常叫做carla-0.9.15-cp38-cp38-win_amd64.whl。cp38标记意味着它只支持CPython 3.864位Windows平台对应win_amd64。如果你拿着Python 3.10或3.11去硬装pip大概率会直接报平台/版本不兼容。就算你换用--force-reinstall强行装上运行时也会因为内部二进制不匹配导致各种崩溃。所以第一步就是把Python限定在3.8。4.2 用conda或官方安装器准备一个干净环境我个人的习惯是用conda单独建环境方便以后切换CARLA版本时不影响其他项目conda create -n carla python3.8 conda activate carla然后进入CARLA解压目录里的PythonAPI/carla/dist/目录找到那个.whl文件执行本地安装pip install carla-0.9.15-cp38-cp38-win_amd64.whl如果你不想用conda直接安装官方Python 3.8也是可以的安装时记得勾选“Add Python to PATH”。后续用py -3.8 -m pip install ...一样能装。4.3 验证导入是否成功环境装完之后先不要急着启动CARLA先验证一下client库能不能正常导入python -c import carla; print(carla.__version__)如果输出0.9.15说明客户端环境已经就绪。如果提示ModuleNotFoundError: No module named carla问题99%出在环境切换上——你当前激活的Python不是刚才装wheel的那个环境。先conda activate carla再执行基本能解决。5. 启动CarlaUE4.exe的正确姿势5.1 第一次启动别直接双击用命令行带参数启动双击CarlaUE4.exe确实能启动但对于第一次或低配机器来说我建议使用命令行方便加参数和看日志。进入WindowsNoEditor目录后执行CarlaUE4.exe -quality-levelLow -windowed -prefernvidia几个参数分别是什么意思-quality-levelLow低画质模式极大降低显卡压力第一跑强烈建议带上-windowed窗口模式启动避免全屏时崩溃导致整个屏幕卡死-prefernvidia在双显卡笔记本上优先使用NVIDIA独显。第一次启动比你想的要慢UE4需要先生成大量着色器缓存。可能你看着像无响应其实后台在跑。正常情况下几十秒到几分钟后会看到城市街区画面加载出来。如果只有CommandLine控制台窗口黑着也别急着杀进程继续等。5.2 怎么判断服务端已经真正就绪CARLA服务端默认的RPC端口是2000。启动日志里通常能看到类似“RPC server listening on port 2000”的信息。如果你想用Python确认可以打开另一个命令行import carla client carla.Client(127.0.0.1, 2000) client.set_timeout(5) print(client.get_server_version())能打印出版本号就说明服务端和客户端已经握手成功。如果抛超时异常先别怀疑代码回头检查CarlaUE4.exe是不是还开着。5.3 双显卡、防火墙和端口占用的几个坑笔记本用户注意CarlaUE4.exe的图形渲染必须走独显否则即使服务端启动了画面也会卡成一帧一帧的PPT。除了在NVIDIA控制面板里指定命令行-prefernvidia参数也能帮上忙。防火墙弹窗第一次出现时一定要允许。被拦掉后Python连接时会超时服务端日志却没有任何报错非常迷惑。如果端口2000被其他程序占用可以用启动参数换一个端口启动比如CarlaUE4.exe -quality-levelLow -windowed -prefernvidia --port2100此时Python连接也要改成carla.Client(127.0.0.1, 2100)。CARLA命令行参数在不同小版本中的写法和功能偶尔会不一样最稳的方式是查一下当前版本支持的命令行选项列表别照搬老命令。6. 跑通一个实际任务才能算安装完成6.1 用config.py切换地图CARLA的PythonAPI/util/目录下提供了一个config.py脚本能快速切换地图和天气。在CARLA根目录下执行python PythonAPI/util/config.py --map Town10HD执行后服务端窗口里的地图应该会切到Town10HD。如果没有任何反应大概率是你当前Python环境里没有carla包或者脚本连接的端口和服务端不一致。这一个点就能过滤掉很多后续环节的问题。6.2 手动驾驶跑一圈检查渲染和输入切换好地图后运行官方自带的示例脚本python PythonAPI/examples/manual_control.py这个脚本会生成一辆车WASD控制前进刹车转向鼠标拖动视角体验和玩竞速游戏差不多。这个环节绝对值得做——它验证的不仅是“服务端能启动”还顺便验证了输入设备、车辆动力学、镜头跟随这些基础模块是否正常。我第一次看到车在屏幕上动起来时才算真正确定0.9.15安装成功。6.3 写一个最小Python脚本验证传感器链路很多人安装完只验证“能连上”就结束了但后续实际用CARLA时还会接触传感器数据。我建议跑一个最小的传感器验证脚本import carla import random import time client carla.Client(127.0.0.1, 2000) client.set_timeout(10) world client.get_world() bp_lib world.get_blueprint_library() vehicle_bp bp_lib.filter(vehicle.audi.tt)[0] spawn_points world.get_map().get_spawn_points() vehicle world.try_spawn_actor(vehicle_bp, random.choice(spawn_points)) if vehicle is None: raise SystemExit(spawn failed, try another spawn point) camera_bp bp_lib.find(sensor.camera.rgb) camera_bp.set_attribute(image_size_x, 640) camera_bp.set_attribute(image_size_y, 480) camera_transform carla.Transform(carla.Location(x-6, z3), carla.Rotation()) camera world.spawn_actor(camera_bp, camera_transform, attach_tovehicle) time.sleep(3) print(vehicle id:, vehicle.id) print(camera id:, camera.id) vehicle.destroy() camera.destroy()这段代码做了四件事连接世界、从蓝图库生成车辆、在车后挂载RGB摄像头、最后释放资源。把这四步跑通你的CARLA 0.9.15安装链路就没有死角了。如果你遇到try_spawn_actor返回None说明当前出生点可能被占用或者位置非法换个spawn_points里的点就行。6.4 验证完怎么退出和清理Python脚本按CtrlC结束服务端在窗口里按Esc或直接关窗退出。如果非正常退出下次启动时加载速度会变慢这是UE4的缓存机制造成的。不用担心定期清理Saved/Logs下的日志文件不会影响CARLA主程序。7. 启动失败排查链路从现象一路找到根因7.1 闪退、秒退优先级最高的排查方向双击CarlaUE4.exe后程序闪退是最常见的失败现象。我的排查顺序是这样显卡驱动把驱动升级到最新并确认系统设备管理器里显卡正常识别运行库安装最新的Microsoft Visual C Redistributable x64缺少VC运行库时UE4程序启动阶段就会异常退出内存压力关闭浏览器和编译工具以低画质、窗口模式再启动独立显卡确认不是在核显上硬跑。闪退问题的关键是观察报错窗口。用命令行方式启动报错文本会保留在终端里截屏留存比凭记忆搜索更有用。7.2 能启动但一直黑屏黑屏分两种一种是首次启动的着色器编译阶段屏幕长时间黑这个只能等另一种是加载完成后依然黑屏或者一闪就退。后者的排查重点是分辨率和窗口模式。尝试加启动参数降低分辨率CarlaUE4.exe -quality-levelLow -windowed -ResX800 -ResY600如果加了参数还是黑屏就把显卡驱动和NVIDIA控制面板的3D设置恢复默认后重试。双显卡用户先确认CarlaUE4.exe到底跑在哪张显卡上。7.3 Python客户端连接超时这是另一个特别常见的坑服务端看着正常Python却连不上。按这个顺序查杀毒软件或Windows Defender有没有拦截端口通讯先加白名单再试服务端端口和客户端端口是否一致改过--port的话必须同步修改客户端库版本和服务端版本是否匹配0.9.15客户端尽量去连0.9.15服务端跨大版本连接会出现兼容性问题。另外用命令确认端口是否在监听状态netstat -ano | findstr :2000有LISTENING状态才说明服务端确实把端口打开了。如果完全没有问题就还在服务端启动环节不是Python环境的问题。7.4 常见错误与对策对照表现象大概率原因第一对策双击后闪退显卡驱动过旧 / VC运行库缺失更新驱动安装VC Redistributable x64画面极卡CUE4跑在核显上NVIDIA控制面板指定独显加-prefernvidiaPython连接超时端口不一致 / 防火墙拦截统一端口加白名单ModuleNotFoundErrorwheel装到了错误的Python环境先激活conda环境再执行脚本解压报错分卷缺失或磁盘空间不足用7-Zip重新解压下载全部分卷资源加载异常路径含中文或特殊字符迁移到纯英文路径重新解压地图加载极慢首次着色器缓存生成等待几分钟不要中途杀进程生成Actor失败出生点被占或SDK没有自定义地图换出生点确认地图已加载8. 装好之后我个人建议你先不要急着追课程CARLA 0.9.15跑通之后很多人第一反应是马上找自动驾驶教程开始跑算法。我的个人建议是先花一天时间把环境里的操作手感练熟——切地图、换天气、生成行人车流、看传感器数据输出。这个版本的好处是稳定坏处是你在后面使用过程中可能会因为某个操作找不到路径而卡住提前熟悉界面能省很多时间。这个系列后面我打算继续写0.9.15的更多内容如何录制和回放数据、如何在Python里配置交通流量、如何把传感器数据导出来做训练集等。第一次安装别贪多引擎能跑起来、车辆能动、传感器能出数据就足够了。后面每个功能扩展都是一个新的小项目环境基础打牢了再往深走会顺得多。