Получение os.environ для работы с Python, запущенным через NSSM - PullRequest
0 голосов
/ 23 мая 2019

Я застрял на несоответствии переменных среды.

Я запускаю скрипт Python в Windows 10 с помощью программы под названием NSSM .

Во время выполнения я делаюследующее:

  1. Загрузка параметров из текстового файла
  2. Поместить его содержимое в среду с помощью os.environ.setdefault(name, value).
  3. Попробуйте загрузить переменные среды с помощью os.environ[name]

Результат: любые переменные, которые я добавил, отображаются , а не .

Я не уверен, почему добавленные мной переменные недоступны. Подскажите, пожалуйста, что я делаю неправильно?

Для начала NSSM использует переменные среды из реестра Windows HKLM: source (см. Внизу).Я не уверен, что по этой причине os.environ не может видеть соответствующие переменные.

Ответы [ 2 ]

1 голос
/ 23 мая 2019

У меня были проблемы с использованием os.environ.setdefault и в прошлом.Вместо этого, скажем, вы пытались добавить в переменную окружения PATH, выполните следующее:

os.environ['PATH'] += ";" + the_path_to_the_file

РЕДАКТИРОВАТЬ:

Кроме того, для создания новой переменной:

os.environ['new_var'] = 'text'
0 голосов
/ 29 мая 2019

Что ж, получается, что моя проблема вышла за рамки этого вопроса.@Recessive и @eryksun спасибо вам обоим за ответ, он поставил меня "на запах".

Оказывается, моя проблема заключалась в использовании Python pathlib Path.home().

  • При запуске через командную строку он извлекает HOMEPATH переменную среды.
  • При работе через NSSM он извлекает USERPROFILE переменную среды.

Это расхождение в Path.home() была настоящей проблемой.Он не находил переменные среды, потому что NSSM искал в совершенно другой папке.

...