声明 SUMO_HOME 时遇到问题

Having problems declaring SUMO_HOME

我正在尝试 运行 测试 python 代码以使用 traci 库,它正在返回 "please declare environment SUMO_HOME"。

我在 Ubuntu 18.4.2 和 Sumo 0.32 上。0.I 之前 运行ning 解决了这个问题 export SUMO_HOME=/home/gustavo/Downloads/sumo-0.32.0/tools/ ,但是这次并不能解决问题。因此,我尝试使用 os 库在 python 文件中实现一行,给出相同的命令,但来自代码本身: os.system("export SUMO_HOME=/home/gustavo/Downloads/sumo-0.32.0/tool/") 而且还是不行,所以才来这里求助。请问有谁能帮帮我吗?

import os
import sys
import optparse

os.system("export SUMO_HOME=/home/gustavo/Downloads/sumo-0.32.0/tool/")
# we need to import some python modules from the $SUMO_HOME/tools directory
if 'SUMO_HOME' in os.environ:
    tools = os.path.join(os.environ['SUMO_HOME=/home/gustavo/Downloads/sumo-0.32.0/tools/'], 'tools')
    sys.path.append(tools)
else:
    sys.exit("please declare environment variable 'SUMO_HOME'")


from sumolib import checkBinary  # Checks for the binary in environ vars
import traci


def get_options():
    opt_parser = optparse.OptionParser()
    opt_parser.add_option("--nogui", action="store_true",
                         default=False, help="run the commandline version of sumo")
    options, args = opt_parser.parse_args()
    return options


# contains TraCI control loop
def run():
    step = 0
    while traci.simulation.getMinExpectedNumber() > 0:
        traci.simulationStep()
        print(step)
        step += 1

    traci.close()
    sys.stdout.flush()


# main entry point
if __name__ == "__main__":
    options = get_options()

    # check binary
    if options.nogui:
        sumoBinary = checkBinary('sumo')
    else:
        sumoBinary = checkBinary('sumo-gui')

    # traci starts sumo as a subprocess and then this script connects and runs
    traci.start([sumoBinary, "-c", "demo.sumocfg",
                             "--tripinfo-output", "tripinfo.xml"])
    run()

我预计这些步骤会出现在终端上。

正确的位置大概是

export SUMO_HOME=/home/gustavo/Downloads/sumo-0.32.0

没有工具或工具后缀。它不会在 python 脚本中与 os.system 一起工作,但您可以直接修改 os.environ。 此外,您在脚本中混淆了对 os.environ 的调用。它应该是:

tools = os.path.join(os.environ['SUMO_HOME'], 'tools')

我将 if else 部分替换为另一个代码:

try:
    sys.path.append("/home/gustavo/Downloads/sumo-0.32.0/tools")
    from sumolib import checkBinary
except ImportError:
    sys.exit("please declare environment variable 'SUMO_HOME' as the root directory of your sumo installation (it should contain folders 'bin', 'tools' and 'docs')")       

解决了问题