Добавить путь к LD_LIBRARY_PATH в Python - PullRequest
1 голос
/ 31 января 2020

Я использовал python3 для установки переменных окружения с помощью os.environ(). Я устанавливал LD_LIBRARY_PATH для пути, который в основном перезаписывает LD_LIBRARY_PATH с использованием кода os.environ["LD_LIBRARY_PATH"] = 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'

Дайте мне знать, что я делаю неправильно или что нужно сделать.

Ответы [ 2 ]

2 голосов
/ 31 января 2020

KeyError: 'LD_LIBRARY_PATH' указывает, что такого ключа нет в вашем словаре os.environ. Таким образом, вы не можете ничего добавить к значению несуществующего ключа.

Сначала вы должны явно указать PATH, а затем добавить, если вам это необходимо. Я бы посоветовал вам добавить чек типа if PATH not in os.environ().keys(), а затем установить его.

1 голос
/ 31 января 2020

Python позволяет легко указать значение по умолчанию.

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

Вы можете сделать sh то же самое с try / except, но на самом деле это не быстрее и не чище, чем это.

Ключ здесь dict.get(value), который в отличие от dict[value) возвращает None вместо повышения KeyError. Он также позволяет вам указать значение, отличное от None, в качестве второго аргумента.

...