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ó.

Kapcsolódó cikkek