ПРИМЕЧАНИЕ. Это , а не тот же вопрос, что и Python: постоянные переменные оболочки в подпроцессе , поскольку этот вопрос фактически касается переменных среды, а не переменных оболочки.
Я пытаюсь автоматизировать базовый тест, который я делаю в csh, с помощью встроенной в оболочку команды time
. Вы можете настроить вывод time
, установив переменную с тем же именем в оболочке следующим образом:
set time=(1000000000 "%U %S %E %P %W %X %D %K %M %F %R %I %O %r %s %k %w %c")
Однако это, конечно, не переменная среды, поэтому вы не можете передать ее в параметре env
в конструкторе subprocess.Popen
(я попробовал это сначала ...). Вы можете взломать его вместе, используя для этого (imo, во всяком случае) аргумент cmd
, а затем свою реальную работу (сокращенно отображаемую):
time_cmd = 'set time=(1000000000 "%U %S %E %P %c"); time ./some_func'
p = subprocess.Popen(cmd, executable="/bin/csh", shell=True, ...)
и это работает так, как вы ожидаете, но, похоже, это не совсем правильный путь (и может привести к довольно ужасной конструкции cmd
, когда вы хотите настроить кучу различных оболочек).
Есть ли другой способ установить переменные оболочки в subprocess
, кроме этого kludge?