Python subprocess.run: adjunk egy gyermekparancsnak saját proxy környezetet
Adjon át másolt környezetet a subprocess.run-nak, amikor egy gyermekparancsnak proxyra van szüksége anélkül, hogy a Python környezete más munkához megváltozna.
Egy Python-program saját proxy környezetet adhat egyetlen gyermekparancsnak. Másolja le az örökölt értékeket, módosítsa a másolatot, és adja át a subprocess.run-nak:
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,
)A példa feltételezi, hogy a curl már elérhető. HTTPS-kérése használhat olyan HTTP-proxyt, amely támogatja a szükséges alagutat. Ehhez a nyilvános webhely-ellenőrzéshez beállított proxy-hitelesítő adatok nélkül egy jelölt a HTTP-proxy listáról helyettesítheti a példa végpontját. A gyermek továbbra is megkapja a másolt környezet többi részét, beleértve az esetleges megkerülési beállításokat.
Az env átadása ezt a környezetet adja a hívásnak. A másolat elkerüli az os.environ módosítását a Python-folyamat más munkáihoz.
Az os.environ közvetlen értékadása is értelmes: frissíti a Python folyamatkörnyezetét, és hatással lehet a később indított gyermekekre. Nem frissíti a Python-t indító shellt, egy nem kapcsolódó alkalmazást vagy egy már futó gyermeket.
Ha a szándék az interaktív shellben a jövőbeli parancsok módosítása, azt a módosítást a shellben végezze el. Ha csak egy elindított eszköznek kell más útvonal, tartsa a környezetét a subprocess hívása mellett, ahogy látható.