Ошибка «Отказано в доступе» при установке переменной окружения с помощью subprocess.call - PullRequest
0 голосов
/ 26 июня 2018

Я пытался установить переменную окружения, и она не удалась из-за отказа в доступе, однако блок try-Кроме не воспринял это как ошибку. Я мог бы поймать код выхода сам, а затем проверить, отличается ли код выхода от 0, но я надеялся, что возможен более питонический способ.

Вот что я пытался сделать так:

try:
    exit_code = subprocess.call(["SETX", "-m", "ENV_VAR", "Test"])
    print 'exit_code: {}'.format(exit_code)  # for debugging purposes
except Exception:
    raise Exception("Could not set environment variable")

И это был результат:

ERROR: Access to the registry path is denied.
exit_code: 1

Process finished with exit code 0

Как вы можете видеть, код выхода, который возвращается из subprocess.call, равен 1, что указывает на ошибку, однако весь процесс Python завершается с кодом выхода 0, и "повышение исключения" никогда не вызывается.

Как лучше всего решить эту проблему?

1 Ответ

0 голосов
/ 26 июня 2018

Спасибо Alex K. за указание на правильное использование. Фиксированный код:

try:
    subprocess.check_call(["SETX", "-m", "ENV_VAR", "Test"])
except subprocess.CalledProcessError:
    raise Exception("Could not set environment variable")
...