如何为 Python 应用程序的所有子进程设置语言环境?

4

我使用Python为Ubuntu桌面编写了一个应用程序指示器,它通过subprocess调用多个外部程序。在英语语言环境下运行良好,但在其他语言环境下会出现错误。

我知道有一种方法可以使用subprocess.call( ['command','arg1','arg3'], env=new_env_dict),但我想知道是否有一种方法可以强制所有subprocess调用都有新的环境而不是每次都调用。

1个回答

3

目前我还没有找到一种全局告诉所有subprocess调用使用特定环境的方法,所以我决定使用单个函数,仅接受参数列表,并设置如相关帖子中所示的语言环境,但略有变化。

def run_cmd(self, cmdlist):

    new_env = dict( os.environ ) 
    new_env['LC_ALL'] = 'C' 
    try:
        stdout = subprocess.check_output(cmdlist,env=new_env)
    except subprocess.CalledProcessError:
        pass
    else:
        if stdout:
            return stdout

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接