Python代码无法使用系统变量

1 投票
3 回答
1286 浏览
提问于 2025-04-18 18:07

我在代码中有一个地方遇到了问题:

import os, sys
import optparse
import subprocess
import random

# we need to import python modules from the $SUMO_HOME/tools directory
try:
    sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', '..', '..', "tools")) # tutorial in tests
    sys.path.append(os.path.join(os.environ.get("$SUMO_HOME", os.path.join(os.path.dirname(__file__), "..", "..", "..")), "tools")) # tutorial in docs
    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')")

import traci

我把SUMO_HOME设置成了一个系统变量,但当我运行这个脚本时,出现了ImportError错误。你知道这可能是什么问题吗?

3 个回答

0

这个解决方案可能只适用于MAC OS,其他操作系统我不太确定。
我发现了问题所在,不知道为什么,Python代码中的'..'数量有误。你需要去掉一个,应该是3个,而不是4个。
正确的应该是:

sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', '..', "tools")) # tutorial in tests

而不是这样。第一个'..'让你进入'tutorial'文件夹,第二个让你进入'docs'文件夹,第三个则是进入包含'bin'、'tools'和'docs'的主文件夹。

1

我也遇到了一些问题。如果我在终端里打印出来,显示的路径是正确的,但在Python文件里却找不到。对我来说,修改了try-except块后就解决了这个问题:

# we need to import python modules from the $SUMO_HOME/tools directory
try:
    sys.path.append(<Path to 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')")

在我的例子中,我使用了这个代码块,并把 <Path to tools> 替换成了 '/Users/Isabelle/sumo-0.28.0/tools'

我知道这条评论来得有点晚,你可能已经解决了这个问题或者继续往前走了,但希望这对其他人仍然有帮助!

祝好,

Isabelle

1

你为什么加了一个$符号?变量的名字是SUMO_HOME,而不是$SUMO_HOME

撰写回答