Python program može jednoj podređenoj naredbi dati vlastito proxy okruženje. Kopirajte naslijeđene vrijednosti, promijenite kopiju i proslijedite je u 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,
)

Primjer pretpostavlja da je curl već dostupan. Njegov HTTPS zahtjev može koristiti HTTP proxy koji podržava potrebni tunel. Za ovu provjeru javnog web-mjesta bez konfiguriranih proxy vjerodajnica, kandidat s popisa HTTP proxyja može zamijeniti krajnju točku iz primjera. Podređeni proces i dalje prima ostatak kopiranog okruženja, uključujući sve primjenjive postavke zaobilaženja.

Prosljeđivanje env daje ovom pozivu to okruženje. Kopija sprječava promjenu os.environ za druge poslove u Python procesu.

Dodjela izravno u os.environ također ima smisla: ažurira okruženje Python procesa i može utjecati na podređene procese pokrenute poslije. Ne ažurira ljusku koja je pokrenula Python, nepovezanu aplikaciju ni podređeni proces koji već radi.

Ako je namjera promijeniti buduće naredbe u vašoj interaktivnoj ljusci, napravite tu promjenu u ljusci. Ako samo jednom pokrenutom alatu treba druga ruta, držite njegovo okruženje uz poziv subprocess, kako je prikazano.

Povezani članci