Переменная интерполяция - это особенность оболочки;без оболочки строка, которую вы пытаетесь ввести echo
, буквально $DUMMY
.
. Вы можете добавить shell=True
, а затем, конечно, изменить первый аргумент на строку вместо списка;
subprocess.check_call('echo "$DUMMY"', env={"DUMMY": "321"}, shell=True)
... или найдите способ передать второй аргумент в списке непосредственно из Python.
Лучший тестовый пример, чем echo
, равен env
;тогда вы можете видеть, что он на самом деле устанавливает переменную так, как вы ее просили.