【问题标题】:Append path to LD_LIBRARY_PATH in Python在 Python 中将路径附加到 LD_LIBRARY_PATH
【发布时间】:2020-02-01 14:42:16
【问题描述】:

我一直在使用 python3 使用os.environ() 设置环境变量。我将 LD_LIBRARY_PATH 设置为一个路径,这基本上是使用代码 os.environ["LD_LIBRARY_PATH"] = PATH 覆盖 LD_LIBRARY_PATH。但我想使用分隔符 : 添加路径。

我正在尝试使用带有分隔符的字符串连接添加路径 os.environ["LD_LIBRARY_PATH"] = os.environ["LD_LIBRARY_PATH"] + ":" + PATH ,它似乎不像这样工作。

我收到以下错误:

os.environ["LD_LIBRARY_PATH"] =os.environ["LD_LIBRARY_PATH"] + ":" + target_directory
 File "/usr/lib/python3.6/os.py", line 669, in __getitem__
  raise KeyError(key) from None
KeyError: 'LD_LIBRARY_PATH'

让我知道我做错了什么或应该做什么。

【问题讨论】:

  • 当你说它似乎没有工作时,你的意思是它返回一个错误还是它根本没有附加 PATH。您还可以提供一个不起作用的测试路径吗?
  • 你在哪个操作系统上?
  • @FlyingTeller Ubuntu 18.04

标签: python environment-variables


【解决方案1】:

KeyError: 'LD_LIBRARY_PATH' 表示您的 os.environ 字典中不存在这样的键。因此,您不能将任何内容附加到不存在的键的值上。

您应该首先明确设置 PATH,然后在需要时附加。我建议你添加一个像if PATH not in os.environ().keys() 这样的检查然后设置它。

【讨论】:

    【解决方案2】:

    Python 让您可以轻松指定默认值。

    old = os.environ.get("LD_LIBRARY_PATH")
    if old:
        os.environ["LD_LIBRARY_PATH"] = old + ":" + PATH
    else:
        os.environ["LD_LIBRARY_PATH"] = PATH
    

    您可以使用 try/except 完成相同的操作,但它并不比这更快或更干净。

    这里的关键是dict.get(value),它与dict[value) 不同,它返回None,而不是引发KeyError。它还允许您指定与 None 不同的值作为其第二个参数。

    【讨论】:

    • 您不需要空字符串。如果未指定默认值,则默认值为 None。而且,无论如何,对于这种情况,通常最好使用None
    猜你喜欢
    • 2018-03-16
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多