Python program može jednoj podređenoj naredbi dati sopstveno proxy okruženje. Kopirajte nasleđene vrednosti, promenite kopiju i prosledite 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,
)

Primer pretpostavlja da je curl već dostupan. Njegov HTTPS zahtev može koristiti HTTP proxy koji podržava potrebni tunel. Za ovu proveru javnog sajta bez konfigurisanih proxy akreditiva, kandidat sa liste HTTP proxyja može zameniti krajnju tačku iz primera. Podređeni proces i dalje prima ostatak kopiranog okruženja, uključujući sve primenljive postavke zaobilaženja.

Prosledjivanje env daje ovom pozivu to okruženje. Kopija sprečava promenu os.environ za druge poslove u Python procesu.

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

Ako je namera da promenite buduće naredbe u svojoj interaktivnoj ljusci, tu promenu napravite u ljusci. Ako samo jednom pokrenutom alatu treba druga ruta, držite njegovo okruženje uz poziv subprocess, kako je prikazano.

Povezani članci