Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python subprocess/Popen with a modified environment

I believe that running an external command with a slightly modified environment is a very common case. That's how I tend to do it:

import subprocess, os my_env = os.environ my_env["PATH"] = "/usr/sbin:/sbin:" + my_env["PATH"] subprocess.Popen(my_command, env=my_env) 

I've got a gut feeling that there's a better way; does it look alright?

like image 451
Oren_H Avatar asked Feb 09 '10 17:02

Oren_H


1 Answers

I think os.environ.copy() is better if you don't intend to modify the os.environ for the current process:

import subprocess, os my_env = os.environ.copy() my_env["PATH"] = "/usr/sbin:/sbin:" + my_env["PATH"] subprocess.Popen(my_command, env=my_env) 
like image 159
Daniel Burke Avatar answered Oct 03 '22 10:10

Daniel Burke