2016-07-22 1 views
3

Я написал индикатор приложения в python для рабочего стола Ubuntu, который вызывает несколько внешних программ через подпроцесс. Он отлично работает под английским языком, но ломается с другими.Как установить язык для всех дочерних элементов приложения python?

Я знаю, что есть способ делать subprocess.call(['command','arg1','arg3'], env=new_env_dict) однако меня интересует, есть ли способ заставить всех звонков subprocess, вместо того, чтобы называть их новой средой.

ответ

2

До сих пор я не нашел способ глобально рассказать все звонки, чтобы использовать определенную среду, поэтому я решил пойти с единственной функцией, которая принимает только список аргументов и набор локалей, как показано в related post, но с небольшим изменением.

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