Windows11下Python调用SUMO CLI执行仿真遇权限拒绝错误求助
Windows11 Python3.11调用SUMO CLI权限拒绝问题修复
先直接点出代码里的核心错误,这是导致你报错的主要原因:
1. SUMO二进制路径指向错误
你当前把sumo_binary设成了SUMO的安装文件夹,而不是具体的可执行文件。Windows下SUMO的命令行程序在bin子目录中,正确路径应该是:
sumo_binary = r'C:\Program Files (x86)\Eclipse\Sumo\bin\sumo.exe'
如果需要用带图形界面的版本,替换成sumo-gui.exe即可。
2. 输出目录设置错误
你把output_directory写成了字符串"os.getcwd()",这会创建一个名为os.getcwd()的文件夹,而非获取当前工作目录。修正为:
output_directory = os.getcwd()
3. 权限问题额外排查方案
如果修正上述两点后仍报错,试试这些操作:
- 右键你的Python IDE(如VS Code、PyCharm),选择以管理员身份运行后再执行脚本
- 检查SUMO安装目录(
C:\Program Files (x86)\Eclipse\Sumo)的读写权限,确保当前用户拥有操作权限 - 确认
sumo_config.sumocfg文件路径正确,若文件不在当前工作目录,需填写绝对路径
修正后的完整代码
import os import subprocess import pandas as pd from shapely import wkt,geometry from shapely.geometry import Point from shapely.geometry import LineString, Polygon import networkx as nx import numpy as np import sumolib def run_sumo_simulation(config_file, output_dir): # 修正SUMO二进制文件路径 sumo_binary = r'C:\Program Files (x86)\Eclipse\Sumo\bin\sumo.exe' command = [sumo_binary, "-c", config_file, "--output-prefix", os.path.join(output_dir, "output")] try: subprocess.run(command, check=True) print("Simulation completed successfully.") except subprocess.CalledProcessError as e: # 打印具体错误信息,方便排查 print(f"Simulation error details: {e}") except PermissionError: print("权限拒绝:请尝试以管理员身份运行程序,或检查文件/目录权限") def main(): sumo_config_file = "sumo_config.sumocfg" # 修正输出目录获取方式 output_directory = os.getcwd() os.makedirs(output_directory, exist_ok=True) run_sumo_simulation(sumo_config_file, output_directory) if __name__ == "__main__": main()
额外建议:在异常处理中添加具体错误打印,能更直观定位问题是路径不存在还是权限不足。
内容的提问来源于stack exchange,提问作者imran_kays
相关产品推荐
相关产品推荐

