流程的环境变量

时间:2011-02-02 15:24:33

标签: python environment-variables subprocess

我需要在python脚本中启动进程,所以我使用这个subprocess.Popen()并通过env函数的参数Popen给出环境变量,但我的进程看不到所需的环境变量。 我该怎么做? 任何帮助将不胜感激。

我正在运行OS X 10.5。

示例:

env = os.environ
env["Foo"] = foo

cmd = "/usr/bin/sudo -H -u "+ self.getCurrentUserName() + "-P" + +os.path.join(dir, app) + app_args

p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True, cwd=dir, env=env)

2 个答案:

答案 0 :(得分:4)

默认情况下,sudo会出于安全原因重置其运行的程序的环境。如果您想避免这种情况,则需要将-E标记传递给sudo,并且您运行的命令必须包含SETENV标记或setenv }选项必须在sudoers文件中设置。有关详细信息,请参阅sudo man pagesudoers man page

答案 1 :(得分:0)

尝试从您正在调用的程序中记录或打印出所有可用的环境变量,也许它在那里但不同。例如,在Windows中,环境变量最终都是大写的。