我需要在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)
答案 0 :(得分:4)
默认情况下,sudo
会出于安全原因重置其运行的程序的环境。如果您想避免这种情况,则需要将-E
标记传递给sudo
,并且您运行的命令必须包含SETENV
标记或setenv
}选项必须在sudoers
文件中设置。有关详细信息,请参阅sudo
man page和sudoers
man page。
答案 1 :(得分:0)
尝试从您正在调用的程序中记录或打印出所有可用的环境变量,也许它在那里但不同。例如,在Windows中,环境变量最终都是大写的。