Conda环境下Python连接TraCI-Server对接SUMO出现连接被拒错误如何解决
错误诱因
核心问题是TraCI接口调用顺序颠倒:
traci.connect()的作用是连接已经启动的TraCI服务端,你先调用该接口时,SUMO进程还没启动,默认的8813端口没有任何服务监听,系统自然会拒绝连接请求,抛出10061错误traci.start()才是负责启动SUMO进程、开启TraCI服务、自动完成内部连接的接口,你把它放在connect()之后,根本没有执行机会
解决方法
代码调整
直接删除多余的traci.connect()调用即可,traci.start()本身已经内置了连接逻辑,修正后的代码片段如下:
# 前面的环境变量配置、导入模块代码保持不变 import traci from sumolib import checkBinary import time # 删掉原有的traci.connect(),直接调用start启动仿真 traci.start(['sumo-gui', '-c', 'osm.sumocfg', "--start", "--quit-on-end"]) # 这里可添加你的仿真控制逻辑,示例为循环执行仿真步 for _ in range(1000): traci.simulationStep() time.sleep(0.01) traci.close()
额外排查项
如果调整顺序后仍报错,可以检查以下配置:
- 确认
osm.sumocfg文件存放在Python脚本的当前工作目录下,否则要填写文件的绝对路径 - 检查Windows防火墙是否拦截了SUMO的本地端口请求,可临时关闭防火墙测试
- 若需要手动指定端口,可在start的参数里添加
--remote-port 8813,再配合traci.connect()调用,普通场景下不需要该操作
内容的提问来源于stack exchange,提问作者Remian-Feral
相关产品推荐
相关产品推荐

