2016-07-22 31 views
3

Ich habe eine App-Anzeige in Python für Ubuntu Desktop geschrieben, die mehrere externe Programme über Subprozess aufruft. Es funktioniert gut unter Englisch Gebietsschema, aber bricht mit anderen.Wie setze ich das Gebietsschema für alle Kinder der Python-App?

Ich weiß, dass es eine Möglichkeit gibt, subprocess.call(['command','arg1','arg3'], env=new_env_dict) zu tun, aber ich bin daran interessiert, ob es eine Möglichkeit gibt, alle subprocess Anrufe haben neue Umgebung stattdessen jedes Mal aufrufen.

Antwort

2

Bisher habe ich keine Möglichkeit, global sagen, alle subprocess Anrufe spezifische Umgebung zu verwenden, so entschied ich mich zu gehen mit einzelner Funktion, die nur dauert Liste der Argumente gefunden und Gebietsschema wie in related post aber mit leichter Variation gezeigt.

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