Das hängt davon ab, worum es geht. Wenn die Umgebung geklont und geändert werden soll, könnte eine Lösung sein:
subprocess.Popen(my_command, env=dict(os.environ, PATH="path"))
Dies hängt jedoch etwas davon ab, dass die ersetzten Variablen gültige Python-Bezeichner sind, die sie am häufigsten sind (wie oft stoßen Sie auf Umgebungsvariablennamen, die nicht alphanumerisch + unterstrichen sind, oder auf Variablen, die mit einer Zahl beginnen?).
Andernfalls könnten Sie etwas schreiben wie:
subprocess.Popen(my_command, env=dict(os.environ,
**{"Not valid python name":"value"}))
In dem sehr seltsamen Fall (wie oft verwenden Sie Steuercodes oder Nicht-ASCII-Zeichen in Umgebungsvariablennamen?), Dass die Schlüssel der Umgebung sind bytes
, können Sie (auf Python3) dieses Konstrukt nicht einmal verwenden.
Wie Sie sehen können, sind die Techniken (insbesondere die erste), die hier für die Schlüssel der Umgebung verwendet werden, normalerweise gültige Python-Kennungen, und auch im Voraus (zum Codierungszeitpunkt) bekannt. Der zweite Ansatz weist Probleme auf. In Fällen, in denen dies nicht der Fall ist, sollten Sie wahrscheinlich nach einem anderen Ansatz suchen .
os.pathsep
anstelle von ":" auch Pfade, die plattformübergreifend funktionieren. Siehe stackoverflow.com/questions/1499019/…