Python subprocess.run: engem Kandkommando seng eege Proxy-Ëmgebung ginn
Gitt eng kopéiert Ëmgebung un subprocess.run, wann eng eenzel Kandkommando e Proxy brauch, ouni Pythons Ëmgebung fir aner Aarbecht ze änneren.
E Python-Programm kann enger eenzeler Kandkommando seng eege Proxy-Ëmgebung ginn. Kopéiert déi ierflech Wäerter, ännert d'Kopie a gitt se un subprocess.run:
import os
import subprocess
child_env = os.environ.copy()
child_env["https_proxy"] = "http://proxy.example:8080"
subprocess.run(
["curl", "--head", "https://www.example.com/"],
env=child_env,
check=True,
timeout=30,
)D'Beispill geet dovun aus, datt curl schonn disponibel ass. Seng HTTPS-Ufro kann en HTTP-Proxy benotzen, deen den néidegen Tunnel ënnerstëtzt. Fir dës Kontroll vun enger ëffentlecher Säit ouni ageriichte Proxy-Umeldungsdaten kann e Kandidat aus der HTTP-Proxy-Lëscht den Endpunkt vum Beispill ersetzen. D'Kand kritt nach ëmmer de Rescht vun der kopéierter Ëmgebung, inklusiv all uwendbar Ëmgeeungsastellungen.
Andeems en env iwwergëtt, kritt dësen Opruff déi Ëmgebung. D'Kopie verhënnert, datt os.environ fir aner Aarbecht am Python-Prozess geännert gëtt.
Direkt un os.environ zeweisen huet och Sënn: et aktualiséiert dem Python säi Prozess-Ëmgebung a kann Kanner beaflossen, déi duerno gestart ginn. Et aktualiséiert net d'Shell, déi Python gestart huet, och net eng onrelatéiert Applikatioun oder e Kand, dat schonn leeft.
Wann d'Absicht ass, zukünfteg Kommandos an Ärer interaktiver Shell z'änneren, maacht déi Ännerung an der Shell. Wann nëmmen een gestarten Instrument en anere Wee brauch, haalt seng Ëmgebung nieft dem subprocess-Opruff wéi gewisen.