运行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)
- 确认你的系统中安装了Python 2.7(如果没有可以下载对应版本)
- 打开命令行,切换到脚本所在目录,用Python 2的解释器执行:
python2 runner.py # 或者直接指定Python 2的路径,比如Windows下: C:\Python27\python.exe runner.py
这个方法不需要修改任何代码,直接适配SUMO 0.29.0的要求。
方法二:升级SUMO到最新稳定版(更推荐长期使用)
旧版本的SUMO不仅存在Python语法兼容问题,还缺少很多新功能、修复了大量bug。建议直接升级:- 卸载当前的SUMO 0.29.0
- 安装最新版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
相关产品推荐
相关产品推荐

