2011-02-02 102 views
0

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

我正在运行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) 
+5

出于隐私原因,我会要求您发布有问题的代码,而不是仅仅从头脑中读取代码。 – 2011-02-02 15:30:52

+0

您是否将所有需要的变量添加到环境中 – 2011-02-02 15:36:54

回答

0

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

4

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