声明 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')")
解决了问题
我正在尝试 运行 测试 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')")
解决了问题