You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行SUMO的TraCI4Traffic Lights示例执行runner.py报错求助

解决SUMO TraCI4Traffic Lights示例的SyntaxError问题

你遇到的这个错误是Python版本不兼容导致的,具体原因很明确:

Traceback里的语法错误指向raise ValueError, 'edge for this lane not yet defined',这是Python 2的旧语法,而Python 3已经不再支持这种写法了。你用的SUMO 0.29.0是非常老旧的版本(发布于2016年),它的工具链完全是基于Python 2开发的,用Python 3运行就会触发这类语法错误。

下面给你几个可行的解决办法:

  • 方法一:用Python 2.7运行脚本(最快适配旧版本SUMO)

    1. 确认你的系统中安装了Python 2.7(如果没有可以下载对应版本)
    2. 打开命令行,切换到脚本所在目录,用Python 2的解释器执行:
      python2 runner.py
      # 或者直接指定Python 2的路径,比如Windows下:
      C:\Python27\python.exe runner.py
      

    这个方法不需要修改任何代码,直接适配SUMO 0.29.0的要求。

  • 方法二:升级SUMO到最新稳定版(更推荐长期使用)
    旧版本的SUMO不仅存在Python语法兼容问题,还缺少很多新功能、修复了大量bug。建议直接升级:

    1. 卸载当前的SUMO 0.29.0
    2. 安装最新版SUMO后,重新运行TraCI示例脚本
      新版本的SUMO工具链完全兼容Python 3,后续使用TraCI或者其他功能都会更顺畅。
  • 方法三:手动修改代码适配Python 3(不推荐,仅临时救急)
    如果你必须使用这个旧版本SUMO,又想用Python 3,可以手动修改出错的语法:
    打开C:\sumo-win32-0.29.0\sumo-0.29.0\tools\sumolib\net\lane.py,把第109行的:

    raise ValueError, 'edge for this lane not yet defined'
    

    修改为Python 3的语法:

    raise ValueError('edge for this lane not yet defined')
    

    但要注意,这只是一个错误点,旧代码里可能还有大量类似的Python 2语法问题(比如print语句、xrange等),修改起来非常繁琐,所以不推荐这种方式。

内容的提问来源于stack exchange,提问作者neda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:05:06